gpt4 book ai didi

perl - 使用 Dumper 不会触发故障

转载 作者:行者123 更新时间:2023-12-02 05:27:25 24 4
gpt4 key购买 nike

当运行这样的代码时:

use strict;
print Dumper "something";

在编译和运行期间没有打印出任何错误。为什么会这样?为什么 strict 不阻止这段代码运行?为什么在运行时没有错误,即使 Dumper 是未知的?

我知道当这些被明确启用时它会产生警告,但我很感兴趣为什么这段代码在任何方面都被认为是“正确的”。

最佳答案

如果您从标准样板开始,那么您会知道:

#!/usr/bin/env perl
#
# name_of_program - what the program does as brief one-liner
#
# Your Name <your_email@your_host.TLA>
# Date program written/released
#################################################################

use 5.10.0;

use utf8;
use strict;
use autodie;
use warnings FATAL => "all";

# ⚠ change to agree with your input: ↓
use open ":std" => IN => ":encoding(ISO-8859-1)",
OUT => ":utf8";
# ⚠ change for your output: ↑ — *maybe*, but leaving as UTF-8 is sometimes better

END {close STDOUT}

our $VERSION = 1.0;

$| = 1;

答案是您的程序在语法上是正确的,但在语义上是不正确的。您正在打印 "something"到未开封的Dumper文件句柄对象,因为 Dumperprint 的与格槽中方法调用。这使得 Dumper print的祈求者。但是您从未打开过该名称的句柄,因此您正在打印到一个未初始化的文件句柄。

使用我的样板。 拜托!

关于perl - 使用 Dumper 不会触发故障,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4272816/

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