gpt4 book ai didi

perl - 为什么有些变量需要初始化而有些变量不需要在同一个脚本中?

转载 作者:行者123 更新时间:2023-12-03 21:41:39 24 4
gpt4 key购买 nike

我正在试验 Perl,并编写了以下二次方程求解器。

#! perl
use strict;
use Math::Complex;
use v5.22;

say "Quadratic Equation Solver";

print "Enter a: ";
$a = <STDIN>;

print "Enter b: ";
$b = <STDIN>;

print "Enter c: ";
my $c = <STDIN>;

my $dis = ($b ** 2) - (4 * $a * $c);

say "x1 = ".((0 - $b + sqrt($dis)) / (2 * $a));
say "x2 = ".((0 - $b - sqrt($dis)) / (2 * $a));
如果我遗漏了 my创建变量时 $c$dis ,我收到一条错误消息,内容如下:
Global symbol "$c" requires explicit package name (did you forget to declare "my $c"?)
Global symbol "$dis" requires explicit package name (did you forget to declare "my $dis"?)
但是,由于变量 $a 将其遗漏,我没有收到任何错误消息。和 $b .这是为什么?此外,即使我省略了 use strict,我也会收到错误消息.我认为 Perl 允许你使用未初始化的变量,如果你忽略它的话。

最佳答案

这是因为您碰巧选择了两个变量( $a$b ),它们始终在所有包中声明为全局变量 - 因此它们始终可以在不声明的情况下使用。如果您选择了 $A$B相反,您会得到与 $c 相同的错误和 $dir如果你离开 my出去。
进一步阅读 $a$b @
perlmaven.com : Don't use $a and $b outside of sort, not even for examples

关于perl - 为什么有些变量需要初始化而有些变量不需要在同一个脚本中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67152091/

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