chop.t revision 7c478bd95313f5f23a4c958a745db2134aa03244
#!./perl
BEGIN {
chdir 't' if -d 't';
}
$_ = 'abc';
$c = do foo();
$_ = 'abc';
$c = chop($_);
sub foo {
chop;
}
$foo = "\n";
$_ = "foo\n\n";
$_ = "foo\n";
$_ = "foo";
$_ = "foo";
$/ = "oo";
$_ = "bar";
$/ = "oo";
$_ = "f\n\n\n\n\n";
$/ = "";
$_ = "f\n\n";
$/ = "";
$_ = "f\n";
$/ = "";
$_ = "f";
$/ = "";
$_ = "xx";
$/ = "xx";
$_ = "axx";
$/ = "xx";
$_ = "axx";
$/ = "yy";
# This case once mistakenly behaved like paragraph mode.
$_ = "ab\n";
$/ = \3;
# Go Unicode.
$_ = "abc\x{1234}";
chop;
$_ = "abc\x{1234}d";
chop;
$_ = "\x{1234}\x{2345}";
chop;
# bug id 20010305.012
my %stuff = (1..4);
# chomp should not stringify references unless it decides to modify them
$_ = [];
$/ = "\n";
$/ = ")"; # the last char of something like "ARRAY(0x80ff6e4)"
$/ = "\n";
my $key = $_;
eval {chomp $_};
if ($@) {
my $err = $@;
$err =~ s/\n$//s;
} else {
}
}
my $key = $_;
eval {chop $_};
if ($@) {
my $err = $@;
$err =~ s/\n$//s;
} else {
}
}
# chop and chomp can't be lvalues
eval 'chop($x) = 1;';
eval 'chomp($x) = 1;';
eval 'chop($x, $y) = (1, 2);';
eval 'chomp($x, $y) = (1, 2);';
local $/ = $end;
# $end ne $end_utf8, so these should not chomp.
$/ = $end_utf8;
}
}
{
# returns length in characters, but not in bytes.
$/ = "\x{100}";
$a = "A$/";
$b = chomp $a;
$/ = "\x{100}\x{101}";
$a = "A$/";
$b = chomp $a;
}