gpt4 book ai didi

perl - 如何设置 $!在 perl 中

转载 作者:行者123 更新时间:2023-12-01 07:10:55 25 4
gpt4 key购买 nike

我想在 perl 中编写一些设置 $!以类似于内置 perl 函数的方式。当我尝试这样做时,它提示“参数“无法创建管理员用户”在标量分配中不是数字。我试过用谷歌搜索这个,但不幸的是谷歌不会在 $!所以结果很难得到。

if(!createUser('admin')) { print $!; }

sub createUser
{
my ($user) = @_;
if($user eq "admin")
{
$! = "Cannot create admin user";
return 0;
}
#create user here
return 1;
}

附注。我知道 Try::Tiny 等,但我想与脚本的其余部分保持一致性,如果我切换到 try/catch,我想移动整个脚本,而我还没有准备好。

最佳答案

$!是一个魔法变量,对应于您的操作系统的数字错误代码(在 Unix-y errno 库中为 libc,在 Windows 中类似于 GetLastError() 来自 kernel32.dll)。

您只能将其设置为一个数字。当 Perl 想在字符串上下文中使用它时,它会将其转换为适当的文本错误消息。

例子:

$! = 4;
print $!, "\n";
print 0+$!, "\n";

产生(在我的系统上,无论如何):
Interrupted system call
4

设置 $! 非常合适(如果不可移植,因为不同的系统可以自由使用不同的整数值来表示标准错误代码)对应于您系统上的一些标准错误:
sub my_do_something_with_file {
my $file = shift;
if (! -f $file) {
$! = 2; # "No such file or directory" on my system
return;
}
...
}

但是没有工具可以创建您自己的自定义错误消息以返回 $! .

关于perl - 如何设置 $!在 perl 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15283782/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com