我有一个脚本,可以将来自 CSV 的传入数据重新格式化为销售系统的可读格式。我可能要疯了,但我很确定它在一两个星期前在生产环境中工作。但是,在过去一两周的某个时间点,它停止了工作。我将问题追溯到未填充 $csv->fields() 属性的 Text::CSV 模块。
my $csv = Text::CSV->new({sep_char => '|', allow_loose_quotes => 1});
$csv->column_names($csv->getline(*READ));
my @keys = $csv->fields;
现在,在我的本地机器上(至少在我的脑海中,两周前的生产环境中也是如此),这将使用解析的标头字段填充@keys。然而,现在,在生产和预生产中,这都失败了。我能说的唯一区别是我的机器运行的是 perl 5.12.4,而 prod/pprd 是 5.8.8。两者上的 Text::CSV 模块都是 1.21。
在我的机器上,如果我使用 Data::Dumper 并转储 $csv 对象,则部分属性是
'_FIELDS' => [
'ID',
'IDCARD_TYPE',
'FIRST_NAME',
'MIDDLE_NAME',
'LAST_NAME',
...
'EMAIL',
],
在其他机器上:
'_FIELDS' => undef,
我已经通过使用 $csv->column_names 来填充 @keys 来解决这个问题,但是似乎有些不对劲,我真的很想弄清楚发生了什么。有任何想法吗?