因此,我試圖拆分具有完整路徑到目錄的變量時遇到問題。我想獲取這個路徑的'logs'目錄下的文件: '/ nfs/fm/disks/fm_mydiskhere_00000/users/me/repotest/myrepo/tools/toolsdir/logs/*';Perl:將包含路徑的變量拆分到目錄
在我的Perl腳本中,我有一個包含這個路徑的變量:'$ log_file'。當我打印'$ log_file'時,它包含整個路徑;我想要轉到最後一個目錄'logs'並獲取它下面的文件。順便說一句,這個完整路徑是正由我的Perl腳本讀取一個單獨的配置文件是這樣的:
sub read_file {
my ($log_file) = shift(@_);
info ("Using file : $log_file");
my $fh = new FileHandle ("$log_file");
printError ("Could not open this file : '$log_file' - $!") unless defined $fh;
my $contents;
{
local $/ = undef;
$contents = <$fh>;
}
$fh->close();
eval $contents;
if ([email protected]) {
chomp [email protected];
my $msg = "BAD (perl) syntax in file:\n\[email protected]\n";
if ($msg =~ /requires explicit package name/) {
$msg .= "\n -> A 'requires explicit package name' message means".
" a NON-VALID variable name was found\n";
}
die "Error: $msg\n\n";
}
return 1;
}
而且我使用變量$ LOG_FILE在另一個子程序中這樣說:
my $fh = read_file ($log_file);
if ($log_file eq "abc.txt"){
while (my $line = <$fh>) {
#do something
}
}
請問有人可以幫我嗎?我錯過了什麼或以錯誤的方式使用$ log_file?
在此先感謝!
我猜'FileHandle'不能接受通配符。這很有意義,因爲文件句柄是單個文件的句柄。嘗試將單個文件的路徑分配到'$ log_file'中,並查看是否可以緩解您的問題。 – wilkesybear 2015-02-23 23:55:00
我明白你的觀點..但是在'/ logs'目錄下,有幾個文件,我根據它的名字對每個文件執行不同的操作。 $ log_file正在讀取整個路徑('/ nfs/fm/disks/fm_mydiskhere_00000/users/me/repotest/myrepo/tools/toolsdir/logs/*';),我不知道如何讓它讀取文件最後的'/ logs'目錄。 – chmod 2015-02-23 23:59:29
如何使用[readdir](http://perldoc.perl.org/functions/readdir.html)首先迭代每個文件名,然後將所有邏輯放入該循環中?這是另一個堆棧溢出問題/答案,可能有助於http://stackoverflow.com/questions/6442889/perl-iterate-through-directories/6443023#6443023 – wilkesybear 2015-02-24 00:16:02