2014-04-24 157 views
3

我正在做一個關於提取tar.gz文件與指定的位置,但當我運行我的代碼的Perl腳本。使用Perl腳本提取tar.gz文件

use strict; 
    use warnings; 

    use Archive::Tar; 
    use File::Spec::Functions qw(catdir); 

    my $input = "sample.tar.gz"; 
    my $tar = Archive::Tar->new($input); 
    my @files = $tar->list_files; 

    my $output_dir = '/var'; 
    foreach my $file (@files) { 

my $extracted_file = catdir($output_dir, $file); 
$tar->extract_file($file, $extracted_file); 

if ($file =~ /\.rpm\z/ /\.sh\z/ /\.gz\z/) { 
    open my $fh, '<', $extracted_file or do { warn "$0: Can't open file $file: $!"; next }; 
    while (defined(my $line = <$fh>)) { 
     do something with $line 
       } 
         close $fh; 
          } 
          } 

我腳本的文件名是「extract.pl」,所以當我運行這個腳本時。我得到這個錯誤

./extract.pl: line 1: use: command not found 

./extract.pl: line 2: use: command not found 

./extract.pl: line 4: use: command not found 

./extract.pl: line 5: syntax error near unexpected token `(' 

./extract.pl: line 5: `use File::Spec::Functions qw(catdir);' 

任何人都可以幫我解決這個問題嗎?

+3

感謝您的編輯.. :) – user3534255

回答

2

您有兩種選擇;一)你的腳本的第一行應該(首先搜索PATH)#!/usr/bin/env perl或直接到你的Perl安裝路徑(我的是#!/usr/bin/perl)。

最後,二)經與perl

perl extract.pl 
-1

調用腳本一個家當北京時間失蹤,告訴其解釋應該由你的腳本中使用。

請加:

#/斌/ perl的

在第一線。

1

使用

#!/usr/bin/perl 

或在Perl是安裝

或者執行的腳本

perl extract.pl 

你的腳本是被解釋內部的任何路徑請給在第一線的Perl解釋器的default shell我相信是bash

,所以它不能識別use,因爲在bash或shell中沒有這樣的關鍵字/命令。 因此錯誤

use command not found 
+0

我試着加入認領,但仍有錯誤。剩下的錯誤是./extract.pl:第5行:'使用File :: Spec :: Functions qw(catdir);'。 – user3534255

+0

@ user3534255嘗試之前和之後放置空格() – PradyJord

+0

我遵循你所說的,但沒有任何更改.. – user3534255