# encoding: Big5Plus
# This file is encoded in Big5Plus.
die "This file is not encoded in Big5Plus.\n" if q{ } ne "\x82\xa0";
use Big5Plus;
print "1..2\n";
my $__FILE__ = __FILE__;
if ($^O !~ /\A (?: MSWin32 | NetWare | symbian | dos ) \z/oxms) {
print "ok - 1 # SKIP $^X $__FILE__\n";
print "ok - 2 # SKIP $^X $__FILE__\n";
exit;
}
$| = 1;
mkdir('dt',0777);
mkdir('dt/alphabet',0777);
mkdir('dt/ú{ê',0777);
open(FILE,">dt/alphabet/alpha.txt") || die "Can't open file: dt/alphabet/alpha.txt\n";
print FILE <<'END';
aaa
bbb
ccc
ddd
eee
END
close(FILE);
open(FILE,">dt/ú{ê/alpha.txt") || die "Can't open file: dt/ú{ê/alpha.txt\n";
print FILE <<'END';
aaa
bbb
ccc
ddd
eee
END
close(FILE);
open(FILE,">dt/alphabet/sjis.txt") || die "Can't open file: dt/alphabet/sjis.txt\n";
print FILE <<'END';
aaa
bbb
¢¢¢
ccc
¤¤¤
ddd
\
eee
END
close(FILE);
open(FILE,">dt/ú{ê/sjis.txt") || die "Can't open file: dt/ú{ê/sjis.txt\n";
print FILE <<'END';
aaa
bbb
¢¢¢
ccc
¤¤¤
ddd
\
eee
END
close(FILE);
my $aaa = <<'END';
!!dt/alphabet!!
!!dt/alphabet/alpha.txt!!
dt/alphabet/alpha.txt:aaa
!!dt/alphabet/sjis.txt!!
dt/alphabet/sjis.txt:aaa
!!dt/ú{ê!!
!!dt/ú{ê/alpha.txt!!
dt/ú{ê/alpha.txt:aaa
!!dt/ú{ê/sjis.txt!!
dt/ú{ê/sjis.txt:aaa
END
my $hyou = <<'END';
!!dt/alphabet!!
!!dt/alphabet/alpha.txt!!
!!dt/alphabet/sjis.txt!!
dt/alphabet/sjis.txt:\
!!dt/ú{ê!!
!!dt/ú{ê/alpha.txt!!
!!dt/ú{ê/sjis.txt!!
dt/ú{ê/sjis.txt:\
END
my $script = __FILE__ . '.pl';
open(FILE,">$script") || die "Can't open file: $script\n";
print FILE <DATA>;
close(FILE);
if (($ENV{'PERL5SHELL'}||$ENV{'COMSPEC'}) =~ / \\COMMAND\.COM \z/oxmsi) {
$_ = `$^X $script aaa dt`;
}
else {
$_ = `$^X $script aaa dt 2>NUL`;
}
sleep 1;
if ($_ eq $aaa) {
print "ok - 1 $^X $__FILE__ aaa dt \n";
}
else {
print "not ok - 1 $^X $__FILE__ aaa dt \n";
print "($_)\n";
print "($aaa)\n";
}
if (($ENV{'PERL5SHELL'}||$ENV{'COMSPEC'}) =~ / \\COMMAND\.COM \z/oxmsi) {
$_ = `$^X $script \ dt`;
}
else {
$_ = `$^X $script \ dt 2>NUL`;
}
sleep 1;
if ($_ eq $hyou) {
print "ok - 2 $^X $__FILE__ \ dt\n";
}
else {
print "not ok - 2 $^X $__FILE__ \ dt\n";
print "($_)\n";
print "($hyou)\n";
}
sleep 1;
unlink($script);
unlink("$script.e");
unlink('dt/alphabet/alpha.txt');
unlink('dt/alphabet/sjis.txt');
unlink('dt/ú{ê/alpha.txt');
unlink('dt/ú{ê/sjis.txt');
rmdir('dt/alphabet');
rmdir('dt/ú{ê');
rmdir('dt');
__END__
# encoding: Big5Plus
# This file is encoded in ShiftJIS.
die "This file is not encoded in ShiftJIS.\n" if q{ } ne "\x82\xa0";
use Big5Plus;
local $^W = 1;
if (@ARGV < 2) {
die <<END;
Àsû@:
perl $0 aaa dt
perl $0 \ dt
END
}
&grepdir(@ARGV);
exit 0;
sub grepdir ($$) {
my($pat,$dir) = @_;
my($node);
opendir(D,$dir);
my @nodes = grep (!/^\./, readdir(D));
closedir(D);
foreach $node (@nodes) {
my $path="$dir/$node";
print "!!$path!!\n";
if ( -f $path ) {
grepfile($pat,$path);
}
elsif( -d $path) {
&grepdir($pat,$path);
}
else {
print STDERR "skip:$path\n";
}
}
}
sub grepfile ($$) {
my($pat,$file) = @_;
open(IN,$file) or die "Error:open($file):$!\n";
while (<IN>) {
chomp;
# C³Ó1
# print "$file:$_\n" if (/$pat/);
print "$file:$_\n" if (/\Q$pat\E/);
}
}
__END__
WindowsÅPerl 5.8/5.10ðg¤¶áÈ¢
Ìu±±ÅÐîµ½XNvgÌTvvÌ grepdir.pl ðpµÄ¢Ü·B
á: ³K\»ðwèµÄCwèµ½fBNgzºÌt@C©çæèo·R[hð¢ÄéB
R}h`®: perl grepdir.pl {p^[} {fBNg}
Ìæ¤ÈeXg«ðpÓ·éB
C:\TEMP\TP> tree /F dt
tH_ pXÌê: {
[ vvvvv_vvvvvvvvv
{
[ VAÔÍ vvvv-ssss Å·
C:\TEMP\TP\DT
¥alphabet
alpha.txt
sjis.txt
¤ú{ê
alpha.txt
sjis.txt
±êð perl ÉÄÀs³¹éÆCÌæ¤ÉÈéB
C:\TEMP\TP\DT>perl grepdir.pl aaa dt
!!dt/alphabet!!
!!dt/alphabet/alpha.txt!!
dt/alphabet/alpha.txt:aaa
!!dt/alphabet/sjis.txt!!
dt/alphabet/sjis.txt:aaa
!!dt/ú{ê!!
!!dt/ú{ê/alpha.txt!!
dt/ú{ê/alpha.txt:aaa
!!dt/ú{ê/sjis.txt!!
dt/ú{ê/sjis.txt:aaa
C:\TEMP\TP\DT>perl grepdir.pl \ dt
!!dt/alphabet!!
!!dt/alphabet/alpha.txt!!
!!dt/alphabet/sjis.txt!!
dt/alphabet/sjis.txt:\
!!dt/ú{ê!!
!!dt/ú{ê/alpha.txt!!
!!dt/ú{ê/sjis.txt!!
dt/ú{ê/sjis.txt:\
¼³È¯êÎÈçȢƱëÍCȺÌæ¤ÈƱëÉÈéB
C³Ó1
³K\»àÉÏðLqµAÏÉi[³êÄ¢éàe»ÌàÌÉ}b`
³¹½¢ÌÅ êÎ \Q ... \E ÅÍÞKvª éB
----------------------------------------------
print "$file:$_\n" if (/$pat/);
----------------------------------------------
« «·¦
----------------------------------------------
print "$file:$_\n" if (/\Q$pat\E/);
----------------------------------------------
Èã