Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   Perl Misc (http://www.velocityreviews.com/forums/f67-perl-misc.html)
-   -   behavior of m// operator (http://www.velocityreviews.com/forums/t907948-behavior-of-m-operator.html)

Nathan 07-30-2008 04:47 AM

behavior of m// operator
 
According to the documentation this program should print nothing since
m// uses the last successful pattern match from m//, split, etc. However
on my linux box it prints 1:

#!/usr/bin/perl -w

$a = "a";
$b = "b";
split /a/,$a;
print $b =~ m//;

Is the documentation wrong?

-Nathan

Zak B. Elep 07-30-2008 05:54 AM

Re: behavior of m// operator
 
Nathan <user@serverrb.net> writes:

> According to the documentation this program should print nothing since
> m// uses the last successful pattern match from m//, split, etc. However
> on my linux box it prints 1:
>
> #!/usr/bin/perl -w
>
> $a = "a";
> $b = "b";
> split /a/,$a;
> print $b =~ m//;
>
> Is the documentation wrong?


No, it is correct. `print' emits 1 because the succeeding match
operation ($b =~ m//) succeeded (m// essentially matches a `null'
string, which $b has:

,----[ perl -de 0 ]
| Loading DB routines from perl5db.pl version 1.28
| Editor support available.
|
| Enter h or `h h' for help, or `man perldebug' for more help.
|
| main::(-e:1): 0
| DB<1> ($a, $b) = ( qw(a b) )
|
| DB<2> x split /a/ => $a
| empty array
| DB<3> print $b =~ m//
| 1
| DB<4> x $b =~ m//
| 0 1
| DB<5>
`----

Because you used `=~', m// tries to match from $b, not from $a (really
$_) as you would expect.

--
I like the idea of 256 bits, though: 32 for the (Unicode) character leaves
room for 224 Bucky bits, which ought to be enough for anyone.
-- Roland Hutchinson, in alt.folklore.computers

xhoster@gmail.com 07-30-2008 03:09 PM

Re: behavior of m// operator
 
Nathan <user@serverrb.net> wrote:
> According to the documentation this program should print nothing since
> m// uses the last successful pattern match from m//, split, etc.


My docs don't explicitly say whether the regex used in a split counts
as previously "matched" or not in this context. Experimentally, it looks
to me like it does not.

Xho

--
-------------------- http://NewsReader.Com/ --------------------
The costs of publication of this article were defrayed in part by the
payment of page charges. This article must therefore be hereby marked
advertisement in accordance with 18 U.S.C. Section 1734 solely to indicate
this fact.


All times are GMT. The time now is 02:22 AM.

Powered by vBulletin®. Copyright ©2000 - 2013, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.