好:
my $login='anybody';
exit if $login ne 'root';
Run Code Online (Sandbox Code Playgroud)
不行:为什么下面不打印" error"?
my $login='anybody';
(print "error" && exit) if $login ne 'root';
Run Code Online (Sandbox Code Playgroud)
我知道if(condition){action}.我只想知道当前的问题.
Bri*_*ach 10
因为你写的东西说:
"打印字符串'错误'的评估和命令退出的结果"
你实际上可以写:
((print "error\n") && exit) if $login ne 'root';
Run Code Online (Sandbox Code Playgroud)
但请不要.:)
有三个问题.
第一个问题,你问的问题,是优先问题之一.
print "error" && exit if ...;
Run Code Online (Sandbox Code Playgroud)
是相同的
print("error" && exit) if ...;
Run Code Online (Sandbox Code Playgroud)
可能的修复:
(print "error") && exit if ...;
print("error") && exit if ...;
print "error" and exit if ...;
Run Code Online (Sandbox Code Playgroud)
第二个问题是以结果exit为条件print,这是不合适的.即使print返回错误,也要退出.
可能的修复:
(print "error"), exit if ...;
print("error"), exit if ...;
Run Code Online (Sandbox Code Playgroud)
第三个问题是这是报告错误的一种非常糟糕的方式.应打印错误,STDERR并应使用非零退出代码.die会在这里工作得很好.
die "error" if ...;
Run Code Online (Sandbox Code Playgroud)
我怀疑你没有看到"错误"打印,对吗?那是因为表达式print "error" && exit被解释为print ("error" && exit).试试这个:
do { print "error"; exit } if $login ne 'root';
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
528 次 |
| 最近记录: |