我在Perl中創建了一個小腳本,我對此很感興趣。我應該有一個腳本來查看給定的參數並在給定的參數中創建一個目錄樹。腳本的這部分工作。第二部分(它是嵌套的if語句)不會在您不提供參數時要求您輸入您選擇的目錄。我相信嵌套的if語句由於$ file輸入而搞亂了,但我不完全確定最新的錯誤。這可能很簡單,但我一直無法找到解決方案。預先感謝您的幫助和提示。運行一個Perl腳本IF語句的小問題。
#! /usr/bin/perl
if ($#ARGV == -1)
{
print "Please enter default directory:";
my $file=<STDIN>;
if (-d $file)
{
chdir $file;
system("mkdir Data");
system("mkdir Data/Image");
system("mkdir Data/Cache");
print "Structure Created";
}
else
{
print "Directory does not exsist";
}
}
else
{
chdir $ARGV[0];
system("mkdir Data");
system("mkdir Data/Image");
system("mkdir Data/Cache");
print ("Structure Created");
}
print ("\n");
需要用'格格($文件)的
$dir
名'你讀它之後,什麼是通過'STDIN'自帶的換行鍵入和'-d $ file'沒有按」 t找到'filename \ n'(因爲它真的是'filename')。此外,爲什麼要爲'@ ARGV'的最後一個元素(這是'$#ARGV')的索引測試'-1'?如果你正在測試'@ ARGV'數組是否爲空,你可以說'if(not @ARGV)' – zdim使用'$ file'變量來保存一個目錄名稱可能會讓你感到困惑,而不是混淆我們。在腳本頂部附近先取出arg:'if(!@ARGV){die「no args supplied ... \ n」; }; $ my dir = $ ARGV [0];'。 ''將在程序運行時接受你在命令行上發送的任何內容,這與命令行參數('ARGV')不同。 (@zdim在評論中顯示如何去除換行符)。還有幾種優化方法,但還沒有足夠的信息來制定完整的答案。 –
stevieb
@stevieb我認爲他們的意思是如果在命令行上沒有提交任何內容,就會提供'STDIN'輸入。如果是這種情況,那麼當@ ARGV'爲空時,他們不能'死亡'。我同意這有點不清楚。 – zdim