如何将空字符串复制到文件

时间:2013-06-12 11:09:34

标签: string perl file

我编写了一个perl脚本,在某些情况下,我必须将空字符串复制到文件中 例如,$str是一个变量,它包含MySQL表中的行数 假设表中没有行,则将空字符串复制到变量$str。存储在$str中的此值需要复制到另一个文件。我怎样才能做到这一点? 当我试图复制时,我收到了这个警告:

Use of uninitialized value $str in string at test.pl line 23

2 个答案:

答案 0 :(得分:8)

空字符串(''""q())与未定义值(undef)之间存在差异。只有最后一个会触发您提到的警告。

如果要保存行数,请在这种情况下保存0:

$str //= 0;

答案 1 :(得分:4)

我认为你只是担心这个警告?如果您有此声明或类似声明:

print $str;

你得到上面提到的警告,这是因为$str包含undef值。 {1}}值将在此语句中转换为空字符串,因此您可以执行以下操作:

undef

请注意,这是一种隐藏警告的方法,所以如果print $str // ""; # defined or operator 中的未定义值表明出现了问题,请不要这样做。

我认为如果您尝试从$str获取行数并获得DBI值而不是undef,那么那么您正在做某事错了,您应该查看您的DBI代码并在那里搜索问题。

如果您确定0表示零undef,则可以执行显式转换:

0

请注意,这仅适用于undef。您也可以使用定义或赋值运算符:

$str += 0;          # undef is converted to 0

如果你的perl版本太低,你可以在这种情况下使用类似的声明:

$str //= 0;

如果$str ||= 0; 包含任何错误值,则有效。