perl 相当于 sh -e

Car*_*rós 6 linux perl shell-scripting

/bin/shand /bin/bash(我猜还有很多其他 shell)中,当脚本中的任何命令行退出时的状态代码不是 0 时,启动脚本#!/bin/sh -e(或set -e在脚本中的某个地方执行)会导致脚本中止。

是否有任何等效或解决方法可以在 perl 脚本中获得相同的行为?(即,如果任何指令产生错误,或者如果使用system(...)或反引号执行的任何外部命令返回错误代码,则立即退出)

bon*_*ing 8

看看autodie核心模块。这用失败时死亡的函数替换了像open和这样的调用fork。要使其与 一起使用system,您需要导入:all:system,因为默认情况下不这样做。

use strict;   #always!
use warnings; #always!
use autodie qw(:system);

system('/bin/false'); #This will die
print "This will never be printed\n";
Run Code Online (Sandbox Code Playgroud)

请务必注意,autodie要使用system,您需要该IPC::System::Simple模块。使用 CPAN 安装它,或者在 Ubuntu 上你可以sudo apt-get install libipc-system-simple-perl