BrowserUk has asked for the wisdom of the Perl Monks concerning the following question:
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'?
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Using @- & @+
by RollyGuy (Chaplain) on Aug 08, 2002 at 17:20 UTC | |
by BrowserUk (Patriarch) on Aug 08, 2002 at 20:47 UTC | |
by jsprat (Curate) on Aug 08, 2002 at 21:33 UTC | |
|
Re: Using @- & @+
by Zaxo (Archbishop) on Aug 08, 2002 at 17:56 UTC |