1

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 を入力することでこれを回避しましたが、何かが正しくないようで、何が起こっているのかを知りたいと思っています。何か案は?

4

2 に答える 2