27
A
回答
61
Exec根本不返回。如果你想這樣做,請使用系統。
如果你只是想讀取一個目錄,打開/ read/close-dir可能會更合適。
opendir my($dh), $dirname or die "Couldn't open dir '$dirname': $!";
my @files = readdir $dh;
closedir $dh;
#print files...
6
爲了獲得系統命令的輸出,您需要使用反引號。
$listing = `ls`;
但是,Perl很擅長處理目錄本身。我建議使用File :: Find :: Rule。
8
EXEC不給控制回perl程序。 系統會,但它不會返回一個ls的結果,它會返回一個狀態碼。 刻度標記``會給你我們命令的輸出,但被某些人認爲是不安全的。
使用內置的dir函數。 opendir,readdir等。
0
我建議你看看IPC::Open3。它比系統或反引號可以更好地控制產生的進程。
12
其他人似乎都停留在問題的執行部分。
如果您想要目錄列表,請使用Perl內置的glob
或opendir
。你不需要一個單獨的過程。
0
在Linux上,我更喜歡看到:
my @files = map { chomp; $_ } `find`;
5
另一個例子:
chdir $dir or die "Cannot chroot to $dir: $!\n";
my @files = glob("*.txt");
5
編輯:哎呀!我以爲你只是想要目錄的清單...刪除'目錄'電話,使這個劇本做你想做的事...
玩文件句柄是在我看來是錯誤的方式。以下是使用File :: Find :: Rule查找指定目錄中所有目錄的示例。它可能看起來像是在爲你正在做的事情而殺人,但是後來它可能是值得的。
首先,我的一個在線解決方案:
File::Find::Rule->maxdepth(1)->directory->in($base_dir);
現在更抽出版本註釋。如果你安裝了File :: Find :: Rule,你應該可以運行這個沒問題的。不要害怕CPAN。
#!/usr/bin/perl
use strict;
use warnings;
# See http://search.cpan.org/~rclamp/File-Find-Rule-0.32/README
use File::Find::Rule;
# If a base directory was not past to the script, assume current working director
my $base_dir = shift // '.';
my $find_rule = File::Find::Rule->new;
# Do not descend past the first level
$find_rule->maxdepth(1);
# Only return directories
$find_rule->directory;
# Apply the rule and retrieve the subdirectories
my @sub_dirs = $find_rule->in($base_dir);
# Print out the name of each directory on its own line
print join("\n", @sub_dirs);
6
使用Perl通配:
my $dir = </dir/path/*>
相關問題
- 1. 如何從Perl中的DOS中獲取目錄列表?
- 2. 如何使用Perl獲取目錄中純文件的列表?
- 3. 如何在集合中獲得pdf的OPDS目錄列表
- 4. 獲得子目錄列表中的MSBuild
- 5. 如何從列表中獲得項目
- 6. 我如何獲得目錄的路徑在Perl
- 7. 如何獲得C中的目錄列表?
- 8. 如何獲得文件列表目錄中的編程
- 9. 如何獲得的Node.js目錄的基於陣列的列表
- 10. 如何獲得SD卡上所有目錄的列表?
- 11. 如何獲取目錄列表或'無'?
- 12. 如何獲得根目錄在PHP
- 13. 如何從SCORM 1.2中獲得目錄
- 14. 如何在禁用目錄列表時獲取文件列表?
- 15. 如何獲得使用Perl的SQL表上的索引列表?
- 16. 如何在Python中獲取目錄中的文件名列表
- 17. 如何獲得在perl文件中存在的最大列數
- 18. 如何在NHibernate中獲得帶ID的項目列表
- 19. 如何在scala中獲得Java列表的單個項目?
- 20. 如何在java中獲取目錄url的文件/目錄列表?
- 21. 獲得目錄
- 22. 如何在Perl中獲取嵌套的目錄內容
- 23. 如何在Linux中獲得一個簡單的遞歸目錄列表,不包括某些目錄
- 24. 如何在Perl中獲得散列的唯一部分?
- 25. 如何在Windows上獲得Perl上最後修改的ftp目錄?
- 26. Perl中,閱讀目錄,並獲得STAT()對每個文件
- 27. 如何獲得MATLAB中特定目錄中所有目錄名稱和/或所有文件的列表?
- 28. 獲取目錄列表
- 29. 如何獲得pvalues列表?
- 30. 如何獲得當前工作目錄
檢查系統的返回值命令:執行opendir ...或死亡 「... $!」 或「使用autodie;」讓他們在默認情況下致命。 我知道這只是一個挑逗,但是當你給初學者提供建議時,這對他們來說是一個重要的教訓。 – tsee 2008-10-15 16:26:05
是的,你說得對,我會添加它。謝謝。 – 2008-10-15 17:29:31
如果有人想知道爲什麼不檢查readdir和closedir:兩者都只有一個可能的錯誤,'無效的目錄句柄'。由於我自己打開並檢查它,我可以放心地認爲它是有效的。另外,在列表上下文中,無論如何都不能檢查readddir。 – 2008-10-15 17:43:26