[sf-perl] Anyone know why won't this work?

Randy J. Ray rjray at blackperl.com
Wed Jul 24 09:50:05 PDT 2013


On 07/24/2013 09:42 AM, Richard Reina wrote:
> Can anyone tell me what I'm doing wrong?
>
> #!/usr/bin/perl -w
>
> my $string = 'The good\n\nThe bad\n\nThe Ugly';
>
> my @str = split /\n\n/, $string;
>
> print "Second thru last element: " . $str[1..$#str] . "\n";
>
>
> GIVES ME:
>
> Use of uninitialized value within @str in range (or flip) at
> test_split.pl line 7.
> Argument "" isn't numeric in array element at test_split.pl line 7.
> Second thru last element: The good\n\nThe bad\n\nThe Ugly

You need to put the declaration of $string in double-quotes. Right now, 
you are creating a string with literal "\" + "n" sequences in it, not 
newlines. And when you are trying to split, the regexp is looking for 
newlines. As a result, @str only has one element, the whole of $string. 
Thus, $str[1] is undefined (and $#str is 0, making your range go down 
instead of up, which yields a non-numeric value for the index, which 
causes the warning).

Randy
-- 
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
Randy J. Ray      Sunnyvale, CA      http://www.rjray.org 
rjray at blackperl.com

Silicon Valley Scale Modelers: http://www.svsm.org


More information about the SanFrancisco-pm mailing list