嗯,我知道這是另一個新手問題,但我非常沮喪,我期待再次開悟。在你們的指導下,我已經學會了如何使用glob函數來讀取目錄中每個文件的內容。現在我正在嘗試readdir-foreach組合來做同樣的事情,但我一直收到「無法打開文件:權限被拒絕」的錯誤。爲什麼這會發生在與管理員相同的目錄,相同的文件和相同的我。有人可以告訴我我做錯了什麼嗎?謝謝。爲什麼我不能打開Perl的readdir返回的文件?
下面的代碼使用的glob功能,它的工作原理:
#! perl
my $dir = 'f:/corpus/';
my @files = glob "$dir/*";
foreach my $file (@files) {
open my $data, '<',"$file" or die "Cannot open FILE";
while(<$data>) {
...}
下面的代碼失敗和錯誤消息指出「無法打開文件:權限被拒絕」。但爲什麼?
#! perl
my $dir = 'f:/corpus/';
opendir (DIR,'f:/corpus/') or die "Cannot open directory:$!";
my @files=readdir(DIR);
closedir DIR;
foreach my $file (@files) {
open my $data, '<',"$file" or die "Cannot open FILE:$!";
while(<$data>) {
...}
在你的死亡筆記中,你應該包括文件的名字($ file),而不僅僅是指定FILE。你應該在opendir()調用中使用變量$ dir - 並在死亡筆記中使用它。 – 2009-10-13 02:48:23
是的,我的死亡筆記中有$ file,錯誤信息似乎更具體。運行原始代碼給我「不能打開。:Permission denied。猜猜是因爲bobbymcr建議的過濾器沒有應用。感謝提醒! – Mike 2009-10-13 03:55:17