perlquestion
jesuashok
Hi all,
<p>
The following subroutine returns its argument with any leading newlines
removed:
<code>
sub xxx {
my $s = shift;
$s =~ s/^\n+//;
$s;
}
</code>
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.
<code>
#!/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.
</code>
</p>
<!-- Node text goes above. Div tags should contain sig only -->
<div class="pmsig"><div class="pmsig-395537">
"Keep pouring your ideas"
</div></div>
<p><small>
2006-10-07 Unapproved by [planetscape] once evidence of habitual plagiarism uncovered.
</small></p>