【发布时间】:2020-02-15 12:02:50
【问题描述】:
我正在尝试将sed 脚本迁移到 perl 单行,因为 perl 支持非贪婪正则表达式。我听取了Non greedy (reluctant) regex matching in sed? 和Why is my Perl in-place script exiting with a zero exit code even though it's failing? 的建议
如果无法打开文件,我需要我的 oneliner 以非零状态退出。
很遗憾,检查-f $ARGV[0] 是不可靠的,因为该文件可能存在但仍然无法访问。
一个想法是在命令行中添加一些 perl 代码在所有文件之间执行,但我找不到。 END 执行一次,如果最后一个文件成功了,那么它就不会知道之前的文件失败了。
touch aaa.txt
chmod 000 aaa.txt
perl -i -pe 'BEGIN { -f $ARGV[0] or die "fatal: " . $!; }' aaa.txt; echo $?
_
Can't open aaa.txt: Permission denied.
0
【问题讨论】: