查明 Perl 值是否已初始化的命令

Command to find out if a Perl value is initialized

我现在的问题是基于我在使用 CSV 文档时遇到的问题,但它也更笼统。

我希望使用 Java/Groovy/Gosu 中的空问号之类的东西来确定数组索引是否已初始化。

我有类似的东西:

for ( my i = 0; i < @engVals or i < @frenchVals; i++ ) {

    $csv->print($file, [ $engVals[i] ?: "",  , $frenchVals[i] ?: "" ] );

    # Where Elvis ops ensure that the array element at i is initialized, and if not stores blank in the CSV
}
defined $engVals[i]

http://perldoc.perl.org/functions/defined.html

或者你可以

$engVals[i] // ''

http://perldoc.perl.org/perlop.html#Logical-Defined-Or

您需要 defined 或 运算符 // 如果已定义,则 returns 它的左操作数,否则它的右操作数

$csv->print($file, [ $engVals[i] // "", $frenchVals[i] // "" ] );

我不确定为什么两个数组元素之间有两个逗号。如果这是一个拼写错误,那么上面的语句就是您想要的,但是如果您希望在生成的 CSV 数据中有一个中间空白字段,那么您应该编写 , "",.