Why do I getthe following output?
#! perl -w my $haystack = "abcdefghijklmnopqrstuvwxyz"; $haystack =~ /(abc)|(cde)|(fgh)|(ghi)|(ijk)|(pqr)|(rst)|(xyz)/g; if ( $#-) { for (1..$#+) { print "match at $-[$_]\n" } } __OUTPUT__ C:\test>test match at 0 Use of uninitialized value in concatenation (.) or string at C:\test\t +est.pl line 7. match at Use of uninitialized value in concatenation (.) or string at C:\test\t +est.pl line 7. match at Use of uninitialized value in concatenation (.) or string at C:\test\t +est.pl line 7. match at Use of uninitialized value in concatenation (.) or string at C:\test\t +est.pl line 7. match at Use of uninitialized value in concatenation (.) or string at C:\test\t +est.pl line 7. match at Use of uninitialized value in concatenation (.) or string at C:\test\t +est.pl line 7. match at Use of uninitialized value in concatenation (.) or string at C:\test\t +est.pl line 7. match at
Also, the docs suggests that ${$_} (within a string within the for loop above will return the matched part of the string?
From perlretut
$x = "Mmm...donut, thought Homer"; $x =~ /^(Mmm|Yech)\.\.\.(donut|peas)/; # matches foreach $expr (1..$#-) { print "Match $expr: '${$expr}' at position ($-[$expr],$+[$expr +])\n"; } prints Match 1: 'Mmm' at position (0,3) Match 2: 'donut' at position (6,11)
How? Given $expr above is a number, how does "${1}" result in 'Mmm'?
In reply to Using @- & @+ by BrowserUk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |