5

私はPerlを学んでいて、perlファイルを開いてコメントを削除するための小さなスクリプトを書きました

# Will remove this comment

my $name = ""; # Will not remove this comment

#!/usr/bin/perl -w<- この特別なコメントは削除しません

編集するファイルの名前は、ターミナル経由で引数として渡されます

die "You need to a give atleast one file-name as an arguement\n" unless (@ARGV);

foreach (@ARGV) {
    $^I = "";
    (-w && open FILE, $_) || die "Oops: $!";
    /^\s*#[^!]/ || print while(<>);
    close FILE;
    print "Done! Please see file: $_\n";
}

ターミナル経由で実行したとき: perl removeComments file1.pl file2.pl file3.pl

私は出力を得ました: Done! Please see file:

このスクリプトは、期待どおりに正確に機能していますが、

問題 1 :$_ファイルの名前を出力しなかったのはなぜですか?

問題 2: ループが 3 回実行されるのに、なぜ1 回Done! Please see file:だけ出力されたのですか?

このスクリプトをできるだけ少ない行でどのように記述しますか?

時間があれば、私のコードにもコメントしてください。

ありがとうございました。

4

4 に答える 4