我在那裏我試圖從運行反引號的輸出拉只是一個文件名的問題拉只是文件名,我的代碼如下:試圖從反引號
$var = `munpack -f filename`;
如果有人熟悉MPack,還將輸出將是這樣的:
tempdesc.txt: File exists
file_20130620.zip (application/octet-stream)
我想只獲取文件名,但是,我所有嘗試的正則表達式都失敗了。我甚至試圖刪除換行符,然後嘗試處理這些信息,但我不能。我認爲他們可能只是空白,並刪除空白,但這些正則表達式失敗。我可以通過並列出每個我試圖提取這些數據的正則表達式,如果有必要,我可以提供這些數據,但也許有人可以使用某些東西。我無法以任何方式產生任何id,也不會改變輸出。所以,僅僅是明確的即時尋找的東西,將輸出我只是文件名前:file_20130620.zip
與輸出給出了一些建議:每YSTH
$var =~ m{^(.+?)\(}m and print "$1\n";
output:
tempdesc.txt: File exists
file_20130620.zip
($filename) = $var =~ /(?s:.*\n)?(.*) \([^)]+\)\n/;
output:
tempdesc.txt: File exists
file_20130620.zip
if($var =~/\S+: [^\n]+\n(\S+) [^\n]+\n/) { printf $1; }
output:
tempdesc.txt: File exists
修復:
$var = `munpack -f filename 2>/dev/null`; #will remove 'tempdesc.txt: File exists'
爲什麼不只是grep的文件名的原始MIME文本?它會在那裏的某個地方。 –
'foo =(command); $ foo =〜s /.* \ W(\ w + \。zip)。*/$ 1/s; print $ foo' – Kevin
@Kevin如果我只使用這個方法:tempdesc.txt:文件存在出現在$ foo中。 – Kizzim