Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?

Re^2: s/PATTERN/func()/em leaks /m into func()

by liverpole (Monsignor)
on Oct 06, 2006 at 12:34 UTC ( #576653=note: print w/replies, xml ) Need Help??

in reply to Re: s/PATTERN/func()/em leaks /m into func()
in thread s/PATTERN/func()/em leaks /m into func()

As diotalevi discovered, the OP was directly plagiarized from this site, which has a date of July 6, 2005:
----------------------------------------------------------------- [Please enter your report here] The following subroutine returns its argument with any leading newline +s removed: sub xxx { my $s = shift; $s =~ s/^\n+//; $s; } However, if this function is called from the replacement part of a s///em, the /m semantics is carried over, and internal newlines will be deleted. I've confirmed the bug to be present in 5.000, 5.004_0[45], 5.005_0x, 5.6.x and 5.8.x, including 5.8.7. However, the bug isn't present in any of the 5.9.x versions of perl. Full test: #!/usr/bin/perl use strict; use warnings; no warnings qw /syntax/; use Test::More tests => 1; # # Delete any leading newlines. # sub xxx { my $s = shift; $s =~ s/^\n+//; $s; } my $a = "A\n\nB"; $a =~ s/([\s\w]+)/xxx $1/e; my $b = "A\n\nB"; $b =~ s/([\s\w]+)/xxx $1/em; is ($b, $a); __END__ 1..1 not ok 1 # Failed test (eep at line 21) # got: 'A # B' # expected: 'A # # B' # Looks like you failed 1 test of 1.


        (his previous SoPW is 'my' with 'if 0' retains old value, which probably wasn't on p5p as it has been beaten to death already),

Guess again ... Re: 'my' with 'if 0' retains old value, points to the p5p site from which jesuashok plagiarized it.


Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://576653]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others taking refuge in the Monastery: (4)
As of 2020-10-30 08:36 GMT
Find Nodes?
    Voting Booth?
    My favourite web site is:

    Results (278 votes). Check out past polls.