ファイル名変更ができません
こんにちは。Perl(超?)初心者です。
フォルダ内にあるファイルの名前を、「filename_ja.txt」という形式から「filename_en.txt」に変更するスクリプトを書こうとしているのですが、エラーになってうまくいきません。
環境は、Windows XP professional SP3とActivePerl 5.10 で、以下のように記述しました。
use strict;
use warnings;
my @filename = glob "*.txt";
foreach my $oldname(@filename) {
my $newname = $oldname;
$newname = ~s/(.+)_ja\.txt/$1_en\.txt/;
rename ($oldname,$newname);
}
これを実行すると、「Use of uninitialized value $_ in substitution (s///) at test_5.pl line 8.」とエラーメッセージが出て、フォルダ内のテキストファイルが消失してしまいます。
また、以下のようにも書いてみたのですが、やはりうまくいきません。
この場合は、エラーこそ出ないものの、なにも起こりません。
use strict;
use warnings;
for(<\.txt>) {
my $old=$_;
s/(.+)_ja\.txt/$1_en\.txt/;
rename($old,$_);
}
初歩的な質問で申し訳ありませんが、ダメな生徒にアドヴァイスを与えるつもりで、スクリプトを添削していただけるとありがたいです。
よろしくお願いします。
お礼
プロパテー?(汗)