1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
|
#! perl
use strict;
use warnings;
use Config;
use FindBin;
use lib "$FindBin::Bin"; # required to load filter-util.pl
BEGIN
{
my $foundTR = 0 ;
if ($^O eq 'MSWin32') {
# Check if tr is installed
foreach (split ";", $ENV{PATH}) {
if (-e "$_/tr.exe") {
$foundTR = 1;
last ;
}
}
}
else {
$foundTR = 1
if $Config{'tr'} ne '' ;
}
if (! $foundTR) {
print "1..0 # Skipping tr not found on this system.\n" ;
exit 0 ;
}
}
require "filter-util.pl" ;
use vars qw( $Inc $Perl $script ) ;
$script = '';
if (eval {
require POSIX;
my $val = POSIX::setlocale(&POSIX::LC_CTYPE);
$val !~ m{^(C|en)}
}) { # CPAN #41285
$script = q(BEGIN { $ENV{LANG}=$ENV{LC_ALL}=$ENV{LC_CTYPE}='C'; });
}
$script .= <<"EOF" ;
use Filter::sh q(tr '[A-E][I-M]' '[a-e][i-m]') ;
use Filter::sh q(tr '[N-Z]' '[n-z]') ;
EOF
$script .= <<'EOF' ;
$A = 2 ;
PRINT "A = $A\N" ;
PRINT "HELLO JOE\N" ;
PRINT <<EOM ;
MARY HAD
A
LITTLE
LAMB
EOM
PRINT "A (AGAIN) = $A\N" ;
EOF
my $filename = "sh$$.test" ;
writeFile($filename, $script) ;
my $expected_output = <<'EOM' ;
a = 2
Hello joe
mary Had
a
little
lamb
a (aGain) = 2
EOM
my $a = `$Perl $Inc $filename 2>&1` ;
print "1..2\n" ;
ok(1, ($? >> 8) == 0) or diag($?);
ok(2, $a eq $expected_output) or diag("$Perl $Inc $filename", $a);
unlink $filename ;
|