CSV からの受信データを自動販売システムで読み取り可能な形式に再フォーマットするスクリプトがあります。私は夢中になっているかもしれませんが、本番環境で 1 週間か 2 週間前に動作したと確信しています。ただし、ここ 1 週間か 2 週間のある時点で、機能しなくなりました。Text::CSV モジュールが $csv->fields() プロパティに値を設定していないという問題まで追跡しました。
my $csv = Text::CSV->new({sep_char => '|', allow_loose_quotes => 1});
$csv->column_names($csv->getline(*READ));
my @keys = $csv->fields;
現在、私のローカル マシン (少なくとも私の頭の中では、2 週間前の運用環境でも) では、これにより @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 を入力することでこれを回避しましたが、何かが正しくないようで、何が起こっているのかを知りたいと思っています。何か案は?