0

相対パスからファイル名を抽出する Perl スクリプトを作成しました。これは、パスを引数として取り、そこから名前を計算し、それをグローバル変数に追加するサブです。

my $all_names = "";
sub check_line
{
    my @args = @_;
    my $line = $args[0]; #take the path
    my @paths = split(/\\|\//, $line); #split according to folder
    my $last = @paths;
    $last = $last - 1;
    my $name = $paths[$last]; #take the file name
    chomp($name); #remove \n character from end of string
    my ($ext) = $name =~ /(\..+)/; #extract the file extension from file name
    if(($ext eq ".h") || ($ext eq ".cpp") || ($ext eq ".c")) #filter the required files
    {
         $all_names = $all_names . "$name "; #append the file names to global variable
    }
}

現在、このスクリプトは Perl 5.005 で正常に動作しています (はい、古いバージョンの Perl もあります!)。しかし、Perl 5.10 で実行すると、正しく実行されません。ファイル拡張子のチェックは常に false を返します。ファイルの拡張子を印刷してもちゃんと.h取れ.cてるけど個別に比べても

if($ext eq ".c")

それからそれはfalseを返しています。ここで何が間違っているのでしょうか?ありがとうございました。

4

1 に答える 1