我有一段Perl代碼用於searchnig目錄並顯示該目錄的內容(如果找到匹配項)。代碼如下:爲什麼我會從readdir獲取一個數字而不是文件名列表?
$test_case_directory = "/home/sait11/Desktop/SaLT/Data_Base/Test_Case";
$xml_file_name = "sample.xml"
$file_search_return = file_search($xml_file_name);
print "file search return::$file_search_return\n";
sub file_search
{
opendir (DIR, $test_case_directory) or die "\n\tFailed to open directory that contains the test case xml files\n\n";
print "xml_file_name in sub routines:: $xml_file_name\n";
$dirs_found = grep { /^$xml_file_name/i } readdir DIR;
print "Files in the directory are dirs_found :: $dirs_found\n";
closedir (DIR);
return $dirs_found;
}
輸出是,
xml_file_name in sub routines:: sample.xml
Files in the directory are dirs_found :: 1
file search return::1
它沒有返回找到的文件名。相反,它總是返回數字1。
我不知道爲什麼它沒有返回目錄中存在的名爲sample.xml
的文件名。
有關更簡單的方法來閱讀目錄的內容,請參閱http://stackoverflow.com/questions/3772001。 – FMc 2010-10-07 10:12:09
'readdir'沒有返回任何'錯誤的'。你認爲'grep'的工作方式與'grep'在現實中的工作方式不一致。見http://perldoc.perl.org/functions/grep.html – 2010-10-07 10:46:30
你真的需要打開'use strict;使用警告;'。它會讓你避免許多麻煩。 – Daenyth 2010-10-07 17:55:30