Discussion:
use encoding 'shiftjis'; の不可解な振る舞い
(too old to reply)
ysk6406
2005-01-03 03:11:25 UTC
Permalink
Win98SE で、ActivePerl 5.8.6 Build 811
を使っています。

以下は、ある条件に一致するファイル名を、指定パターンと連番のファイル名にリネームするスクリプトです。

print "Old pattern: ";
$opat = <STDIN>;
chop($opat);
print "New pattern: ";
$npat = <STDIN>;
chop($npat);
print "Starting #: ";
$i = <STDIN>;
chop($i);
@flist = glob("$opat");
foreach $old (@flist) {
&#12288;&#12288;$new = sprintf("$npat", $i);
&#12288;&#12288;print "Renaming $old --> $new\n";
&#12288;&#12288;rename($old, $new);
&#12288;&#12288;++$i;
}
print "Done.\n";

&#12371;&#12398;&#12473;&#12463;&#12522;&#12503;&#12488;&#12399;&#27491;&#12375;&#12367;&#21205;&#20316;&#12375;&#12390;&#12356;&#12427;&#12398;&#12391;&#12377;&#12364;&#12289;&#12371;&#12428;&#12398;&#20808;&#38957;&#12395;&#12289;
&#12288;&#12288;use encoding 'shiftjis';
&#12434;&#20837;&#12428;&#12383;&#12384;&#12369;&#12391;&#12289;&#21205;&#12363;&#12394;&#12367;&#12394;&#12387;&#12390;&#12375;&#12414;&#12356;&#12414;&#12377;&#12290;
&#65288;rename &#12395;&#12456;&#12521;&#12540;&#12481;&#12455;&#12483;&#12463;&#12364;&#20837;&#12387;&#12390;&#12356;&#12414;&#12379;&#12435;&#12364;&#12289;&#12456;&#12521;&#12540;&#12481;&#12455;&#12483;&#12463;&#12434;&#36861;&#21152;&#12377;&#12427;&#12392;&#12289;$old
&#12364; No such file or directory
&#12392;&#12394;&#12387;&#12390;&#12375;&#12414;&#12356;&#12414;&#12377;&#12290;&#65289;

&#12371;&#12428;&#12399;&#12289;&#12394;&#12380;&#12391;&#12375;&#12423;&#12358;&#12363;&#65311;

&#12385;&#12394;&#12415;&#12395;&#12289;perl -d
&#12391;&#35519;&#12409;&#12424;&#12358;&#12395;&#12418;&#12289;-d
&#20184;&#12365;&#12391;&#12371;&#12398;&#12473;&#12463;&#12522;&#12503;&#12488;&#12434;&#21628;&#12435;&#12384;&#12384;&#12369;&#12391;
Perl &#12364;&#12463;&#12521;&#12483;&#12471;&#12517;&#12375;&#12390;&#12375;&#12414;&#12356;&#12289;&#12362;&#25163;&#19978;&#12370;&#12398;&#29366;&#24907;&#12391;&#12377;&#12290;

&#21407;&#22240;&#12364;&#12362;&#12431;&#12363;&#12426;&#12398;&#26041;&#12289;&#12424;&#12429;&#12375;&#12367;&#12362;&#39000;&#12356;&#12375;&#12414;&#12377;&#12290;
Takumi Hayashi
2005-01-10 14:01:39 UTC
Permalink
$BNS$G$9!#(B
Win98SE $B$G!"(BActivePerl 5.8.6 Build 811
$B$r;H$C$F$$$^$9!#(B
$B0J2<$O!"$"$k>r7o$K0lCW$9$k%U%!%$%kL>$r!";XDj%Q%?!<%s$HO"HV$N%U%!%$%kL>$K%j%M!<%`$9$k%9%/%j%W%H$G$9!#(B
print "Old pattern: ";
$opat = <STDIN>;
chop($opat);
print "New pattern: ";
$npat = <STDIN>;
chop($npat);
print "Starting #: ";
$i = <STDIN>;
chop($i);
@flist = glob("$opat");
$B!!!!(B$new = sprintf("$npat", $i);
$B!!!!(Bprint "Renaming $old --> $new\n";
$B!!!!(Brename($old, $new);
$B!!!!(B++$i;
}
print "Done.\n";
$B!!!!(Buse encoding 'shiftjis';
$B!J(Brename $B$K%(%i!<%A%'%C%/$,F~$C$F$$$^$;$s$,!"%(%i!<%A%'%C%/$rDI2C$9$k$H!"(B$old
$B$,(B No such file or directory
$B$H$J$C$F$7$^$$$^$9!#!K(B
$B$3$l$O!"$J$<$G$7$g$&$+!)(B
use encoding 'shiftjis' $B$rIU2C$7<B9T$9$k$H(B $new $B$NKvHx$K(B
0x0D $B$,(B $BIU$$$F$$$k$h$&$G$9!#(B rename $B$K(B or warn $! $B$rIU2C$7(B
$B$?=j!"(B

Permission denied at t.pl line 16, <STDIN> line 3.

$B$N$h$&$J%a%C%;!<%8$,I=<($5$l$^$7$?!#$J$<$+(B STDIN $B$H$$$&J8;z(B
$BNs$,I=<($5$l$F$$$^$9!#(Bencoding $B$N%I%-%e%a%s%H$r8+$k$H(B

use encoding *ENCNAME* [ STDIN => *ENCNAME_IN* ...] ;
You can also individually set encodings of STDIN and STDOUT via
the
"STDIN => *ENCNAME*" form. In this case, you cannot omit the
first
*ENCNAME*. "STDIN => undef" turns the IO transcoding completely
off.

$B$H$$$&@bL@$,$"$j$^$7$?!#%(%i!<%a%C%;!<%8$+$i$7$F!"(BSTDIN $B$,$i(B
$B$_$@$m$&$H$$$&;v$G(B

use encoding 'shiftjis';

$B$G$O$J$/(B

use encoding 'shiftjis', STDIN => undef;

$B$H$7$F$_$?=***@5>o$KF0:n$7$^$7$?!#:,K\E*$J860x$OD4$Y$F$^$;$s!#(B
$B$H$j$"$($:F0:n$7$?$N$G%]%9%H$7$^$9!#F0:n$5$;$?4D6-$O(B
Windows2000 $B$G$9!#(B


$B4X78$"$j$^$;$s$,!"%]%9%H$5$l$?5-;v$,(B
Win98SE &#12391;&#12289;ActivePerl 5.8.6 Build 811
&#12434;&#20351;&#12387;&#12390;&#12356;&#12414;&#12377;&#12290;
$B$N$h$&$K$J$C$F$$$^$9!#(B
--
$BNSBsH~(B(Takumi Hayashi)
Masanori HATA
2005-01-11 13:18:20 UTC
Permalink
$BH*$G$9!#(B
Post by Takumi Hayashi
use encoding 'shiftjis' $B$rIU2C$7<B9T$9$k$H(B $new $B$NKvHx$K(B
0x0D $B$,(B $BIU$$$F$$$k$h$&$G$9!#(B rename $B$K(B or warn $! $B$rIU2C$7(B
$B$?=j!"(B
Permission denied at t.pl line 16, <STDIN> line 3.
$B$N$h$&$J%a%C%;!<%8$,I=<($5$l$^$7$?!#(B
rename() $B$G$O$J$/0J2<$N$h$&$K(B sysytem() $B$G(B DOS $B%3%^%s%I$N(B ren $B$KEO$9$H(B
$B!H$H$j$"$($:!I>e<j$/9T$-$^$7$?!J$=$l$G$***@x:_E*$K(B $! $B$O=P$F$$$k$h$&$J$s$G$9(B
$B$,!K!#(B

#!/perl/bin/perl -w
use 5.008;
use strict;
use warnings;

use encoding 'shiftjis';

print 'Old pattern: ';
chomp(my $opat = <STDIN>);
print 'New pattern: ';
chomp(my $npat = <STDIN>);
print 'Starting #: ';
chomp(my $i = <STDIN>);

my @flist = glob($opat);
foreach my $old (@flist) {
my $new = sprintf($npat, $i++);
print "Renaming $old --> $new\n";
system('ren', $old, $new);
}

print "Done.\n";
__END__
Post by Takumi Hayashi
$B4X78$"$j$^$;$s$,!"%]%9%H$5$l$?5-;v$,(B
Post by ysk6406
Win98SE &#12391;&#12289;ActivePerl 5.8.6 Build 811
&#12434;&#20351;&#12387;&#12390;&#12356;&#12414;&#12377;&#12290;
$B$N$h$&$K$J$C$F$$$^$9!#(B
***@mail.goo.ne.jp $B$5$s$,(B Google $B$+$i%]%9%H$7$F$$$k$N$,860x$@$H;W$o(B
$B$l$^$9!#(B

$BI91jMk8wIw$5$s$N(B
<http://www.interq.or.jp/uranus/cuncuku/nihongo/fjapanihon_words.html#google>
$B$H$$$&J8=q$"$?$j$r;29M$K$7$F$_$k$H$$$$$H;W$$$^$9!J(B> ysk6406 $B$5$s!K!#(B
--
Masanori HATA
ysk6406
2005-01-14 12:01:48 UTC
Permalink
$B$3$s$K$A$O!#(Bysk6406 $B$G$9!#(B
$B3'$5$s!"$$$m$$$mD4$Y$F2<$5$C$F$"$j$,$H$&$4$6$$$^$9!#(B

$B7k6I!"(B$opat = <STDIN>; $B$G(B $opat $B$NKvHx$,(B \r\r\n $B$K$J$k$N$,860x$G!"(B
$B$3$l$O(B chomp $B$G$b<h$j$-$l$J$$$7!"$+$H$$$C$F(B chop $B$r#22s<B9T$9$k(B
$B$H$$$&$N$b4m$J$$$N$G!";d$O<!$N$h$&$K$7$F$7$^$$$^$7$?!#(B
$B!J$b$C$HNI$$J}K!$,$"$l$P!"65$($F2<$5$$!#!K(B

$B!!!!(B($opat = <STDIN>) =~ s/[\r\n]+//;

ActivePerl $B$NLdBj$,<#$k$^$G$O!"$3$l$GN?$4$&$H;W$$$^$9!#(B
Post by Masanori HATA
$B$l$^$9!#(B
$BJ8;z2=$1!"?=$7Lu$"$j$^$;$s$G$7$?!#(B
Google $B$+$i$N%]%9%H$O!"1Q8l$@$7<jB3$-$bLLE]$@$7!"$b$&D($jD($j$G$9!#(B
$B:#2s$O!"%W%m%P%$%@$N(B mnews $B$+$i%]%9%H$7$^$7$?!#(B

Loading...