http://www.perlmonks.org?node_id=544852

jesuashok has asked for the wisdom of the Perl Monks concerning the following question:

Hi all,

The following subroutine returns its argument with any leading newlines 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.
#!/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.

"Keep pouring your ideas"

2006-10-07 Unapproved by planetscape once evidence of habitual plagiarism uncovered.