2016-09-29 102 views
0

我有以下文件。Perl腳本無法從系統命令運行時找到包含文件

a.pl 

    #!/usr/bin/perl 
    system('perl b.pl'); 

b.pl 

    print `cwd`; 
    require "conf/cf.pl"; 

cf.pl 

    $var = "val"; 
    1; 

這是目錄設置。

testdir/a.pl 
testdir/b.pl 
testdir/conf/cf.pl 

我在目錄TESTDIR並運行命令:

perl a.pl 

這種失敗

testdir 
Can't locate conf/cf.pl in @INC... 

爲什麼不能找到包含文件,即使當前目錄正確?

這是在Kali Linux上。

+0

'push @INC,'conf';需要「cf.pl」;' – toolic

+0

爲什麼需要這樣做?它適用於我嘗試過的每一個版本的Linux。 – user740521

+1

似乎你的'@ INC'中缺少當前目錄。嘗試在''''''''''''''''''''''中添加'use lib'.''或者使用'require'和絕對路徑名。注意:您也可以通過設置環境變量「PERL5LIB」將當前目錄添加到「@ INC」。 –

回答

3

您正在使用哪個版本的Perl?作爲對CVE-2016-1238的迴應,正在進行從@INC中刪除當前目錄的工作。嘗試在鏈的每個部分打印@INC的值以驗證這一點。

要改變這種情況,可以deliberately add a directory to @INC

-1

也許命令'cwd'是問題。你的Linux有這個命令嗎?我假設你在linux上運行這個。無論如何,嘗試改爲'pwd'。

+0

您的代碼與'pwd'適合我。 –

相關問題