我創建了一個Perl腳本來從相對路徑中提取文件名。 這是一個將路徑作爲參數的子集,然後根據它計算名稱,然後將其附加到全局變量。在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。 這裏有什麼可能是錯的? 謝謝。
如果打印'長度($ EXT)',它打印2' .c'? – Andomar 2013-05-08 05:47:53
@Andomar否,它的印刷3.爲什麼會發生這種情況? 不應該chomp刪除所有這些\ n。 \ r個字符? – 2013-05-08 06:04:48