2015-07-01 18 views
0

我編寫了一些perl代碼來獲取一些文件名並從文件中獲取一些值。如果我從當前目錄i執行我的perl腳本,那麼所有輸入文件所在的目錄都會執行,它執行得很好,並給我很好的結果。如果我將perl腳本更改爲不同的目錄,則表示無法打開該文件。這裏是一小段代碼。程序沒有從perl中的其他目錄執行


#!/usr/bin/perl 

use strict; 
use warnings; 
use Getopt::Long; 
my $opt_filepath; 

&GetOptions (
"filepath:s" => \$opt_filepath,); 

my $dir ="/home/priya/scripts/${opt_filepath}/check"; #base directory to look up for the files 
    print "$dir \n"; 
    # Create output csv file 
    my $fileName = "Output.csv"; #output redirects to current directory 
    # ---- Read and Write as .csv file ------------------------- 
open (FILEHANDLER, ">", $fileName) or die("Could not write output File               '$fileName' : $!"); 
     print FILEHANDLER "Section,"; 
    print FILEHANDLER "Result"; 
    print FILEHANDLER "\n"; 

my @fileName =(); 
my @FileContents =(); 
my @Result =(); 
    opendir(DIR, $dir) or die "Unable to read Directory : $!"; 
while (my $file = readdir(DIR)) { 
    #Only files not subdirectories 
    next unless (-f "$dir/$file"); 
     next unless ($file =~ m/^EXP_.*/i); #will search for all EXP files 
print "$file \n"; 
@fileName = split(/_/, $file, 8); 
     print FILEHANDLER $fileName[1].","; 
open (FH, "<", $file) or die("Could not open Input File : $!"); 
     @FileContents = <FH>; 
@Result = grep (/^ADDSUB/, @FileContents); 
print FILEHANDLER $FileContents[1]."\n"; 

     close FH; 
} 
closedir(DIR); 
close FILEHANDLER; 
exit 0; 

如果執行中,我都輸入EXP文件的目錄,它是執行好,給了我很好的效果。如果我將代碼複製到不同的目錄,然後執行它給我這個錯誤

>priyascript.pl -filepath test 
/home/priya/scripts/test/check 
EXPresult_101101_test 
Could not open Input File : No such file or directory at priyascript.pl line 31 

我打印$文件,以檢查它是否傳遞文件名。它傳遞文件名但不打開它。 我與所有文件夾的權限檢查,並給予777

請幫我

+0

這只是我的一小段代碼。如果有什麼遺漏,請忽略 – Priya

+0

那麼89行到'idve.pl'的位置在哪裏? – nowox

+0

您的代碼將不會執行。有編譯錯誤。在第33行聲明'@ Result'。 – serenesat

回答

2

你不帶路徑打開輸入文件。取而代之的

open (FH, "<", $file) 

你應該有

open (FH, "<", "$dir/$file") 
+0

@Priya:填充後也不要使用「@ Result」 – Borodin