我有一个带有一些坚定的变量和变量的sub我在sub中声明和使用,但当我调用这个sub时我无法声明它们。
例如:
18:08:32 error: Invalid argument: cannot open transport registration
socketpair
18:08:32 could not read ok from ADB Server
18:08:32 * failed to start daemon *
18:08:32 error: cannot connect to daemon
18:08:32 'C:\Users\samarc\AppData\Local\Android\Sdk\platform-
tools\adb.exe,start-server' failed -- run manually if necessary
当我尝试时,我收到了错误
"在test.pl行的字符串eq中可以使用未初始化的值$ ..."
我该如何纠正?
答案 0 :(得分:3)
这不是声明的问题。如果只将两个参数传递给以
开头的子程序 my ( $firm1, $firm2, $possible ) = @_;
然后$possible
未定义,这意味着它设置为特殊值undef
,类似于NULL
,None
,{ {1}}等用其他语言
如您所见,您无法在不产生警告消息的情况下比较未定义的值,您必须先使用nil
运算符检查是否已定义变量
我想您想测试defined
是否已定义并设置为字符串$possible
。你可以这样做
smth
答案 1 :(得分:2)
这不是声明的问题,而是传递未定义的值。
有几种方法可以解决这个问题:
$possible //= "default_value"
或完全做其他事情。