簡體   English   中英

無法在Perl中使用qx從提示行完成命令

[英]Unable to complete a command from prompt line, using qx in Perl

我需要我的perl程序在Windows命令行中執行DIR命令。 我使用這些行:

$percorso1= C:\PerlEsercitazione\FileCompare1\VSS\Divina Cömmediä\ProgettoTest
my $cmd_string = "dir /ad /b ".$percorso1 ;
my @result = qx {$cmd_string};                              

顯然$percorso1是遵循的方法。 問題是@result原來是空的。 我直接在外殼中鍵入了DIR命令,它可以工作,所以問題應該出在qx函數上。 我哪里錯了?

無論如何,我嘗試使用readdir,opendir和closedir但使用此代碼:

opendir ("Temp_VSS", $percorso1);
my @result = readdir ($percorso1);
closedir ("Temp_VSS");

而我得到錯誤“ dirhandle的壞符號”

不知道為什么會失敗(可能是dir實際上不是可執行文件,而是shell命令,因此您可以嘗試使用cmd /c "dir /ad /b $percorso1" )。 但是通常最好避免使用具有內部功能的外部程序。

具體來說, File :: Slurp :: read_dir可以通過內部錯誤處理為您輕松得多:

my @files = File::Slurp::read_dir($percorso1, err_mode => 'carp', keep_dot_dot => 0);

$ percorso1聲明缺少引號。 您將需要反斜杠。 該行應以分號結尾。 另外,您將需要使用utf8; 因為您的源代碼包含utf8編碼的字符。

對於第二個片段,請看這里: Perl:dirhandle的錯誤符號

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM