Use of implicit split to @_ is deprecated ...
This warning has disappeared in Perl 5.12, but if you still use an older version of Perl you might encounter it.
The basic code looks like this:
my $x = split /,/, $str;
The problem is that split always returnes a list of values and if you assign it to a scalar value then at one point perl used to try to guess what you wanted to do. It would assign the results of the split to the @_ variable implicitly and then use that in scalar context.
examples/split.t
use strict; use warnings; use Test::More; plan tests => 1; my @warnings; BEGIN { $SIG{__WARN__} = sub { push @warnings, @_; }; } my $str = "a,b,c"; # split /,/, $str; # Useless use of split in void context sub f { my @expected; my $x = split /,/, $str; if ($] < 5.012000) { push @expected, 'Use of implicit split to @_ is deprecated'; is substr($warnings[0], 0, length($expected[0])), $expected[0], 'implicit warning'; } else { is_deeply \@warnings, \@expected; } my $first_count = (length($x) ? scalar split(":", $x) : 0); } f();
Published on 2019-03-31
Comments
In the comments, please wrap your code snippets within <pre> </pre> tags and use spaces for indentation. comments powered by Disqus
If you have any comments or questions, feel free to post them on the source of this page in GitHub. Source on GitHub.
Comment on this post