バックティックを実行した出力からファイル名だけを取得しようとしているという問題があります。私のコードは次のとおりです。
$var = `munpack -f filename`;
誰かが mpack に精通している場合、出力は次のようになります。
tempdesc.txt: File exists
file_20130620.zip (application/octet-stream)
ファイル名を取得しようとしていますが、試みた正規表現はすべて失敗しました。改行を削除してから情報を処理しようとしましたが、できません。それらは単なる空白であり、空白を削除できると思いましたが、それらの正規表現は失敗しました。このデータを取得しようとしたすべての正規表現を調べてリストすることができ、必要に応じてそれを提供できますが、誰かが機能する可能性があるかもしれません。好きな一致を生成したり、出力を変更したりすることはできません。明確にするために、ファイル名だけを出力するものを探していますex:file_20130620.zip
出力で与えられるいくつかの提案:
$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
ysth ごとに修正:
$var = `munpack -f filename 2>/dev/null`; #will remove 'tempdesc.txt: File exists'