Re: behavior of m// operator
- From: zakame@xxxxxxxxxx (Zak B. Elep)
- Date: Wed, 30 Jul 2008 13:54:01 +0800
Nathan <user@xxxxxxxxxxxx> 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
.
- References:
- behavior of m// operator
- From: Nathan
- behavior of m// operator
- Prev by Date: Re: Append newline to files
- Next by Date: Re: Can I upload Perl program in unicode?
- Previous by thread: behavior of m// operator
- Next by thread: Re: behavior of m// operator
- Index(es):
Relevant Pages
|