我想編寫一個遍歷目錄及其子目錄的腳本,抓取所有XML文件並解析它們。我遇到chdir
問題。這工作得很好:如何使用chdir遍歷子目錄並解析XML文件?
my $search = "/home/user/books";
chdir($search) or die "cant change dir to $search $!";
system("ls");
但我希望用戶來決定,他要尋找它的路徑,所以我用Getopt::Long
:
use strict;
use warnings;
use Data::Dumper;
use XML::Simple;
use Getopt::Long;
my $outputFile = '';
my $searchPath = "";
my $debug = 0;
GetOptions('outputFile=s' => \$outputFile, 'searchPath=s' => \$searchPath);
if ($outputFile eq '' or $searchPath = '') {
die("parameter --outpulFile=s is required.");
}
$searchPath =~ s/\/*$/\//;
my @founddirs = `cd $searchPath`;
foreach my $foundfiles (@founddirs) {
print $foundfiles;
chdir($foundfiles) or die "cant change dir to $searchPath $!";
chdir('..');
}
命令來運行:
perl sample.pl --outputFile=books.txt --searchPath=/home/user/june18
我想抓取子目錄中的所有recursive.xml文件並解析它們。有誰知道這可以做到嗎?
爲什麼沒有你的代碼的工作?你是否收到錯誤信息? –
是的它說不能執行「cd」:沒有這樣的文件或目錄在sample.pl第20行。 – upstream
我剛剛嘗試添加我的@founddirs ='cd $ searchPath; ls';現在它說「不能改變目錄到/沒有這樣的文件或目錄」 – upstream