1

読み込んでいるファイルがあります。perl を使用して日付を再フォーマットしています。コンマ区切りファイルです。ファイルの 1 つで、element.0 が郵便番号で、element.1 がカウンターであることがわかっています。各行には、1 ~ n 個の都市を含めることができます。element.3 から行末までの要素の数を知る必要があるため、要素を適切に再フォーマットできます。element.3 で始まる foreach ループを使用して、他の要素を単一の文字列にフォーマットしたいと考えていました。

どんな助けでも大歓迎です。基本的に、csv ファイルを読み込んで cpp ファイルを作成しようとしています。このファイルは、別のプラットフォームでそのプラットフォームのプラグインとしてコンパイルできます。

敬具 マイケル・グールド

4

2 に答える 2

2

次のようにして、行からフィールドを取得できます。

my @fields = split /,/, $line;

3 から最後までのすべての要素にアクセスするには、次のようにします。

foreach my $city (@fields[3..$#fields])
{
   #do stuff
}

(注、あなたの質問に基づいて、ゼロベースのインデックスを使用していると仮定します。したがって、「要素3」は4番目の要素です)。

Text::CSVまたは、特にエスケープされた区切り文字などがある場合は、CSV ファイルを読み取ることを検討してください。

于 2013-03-15T13:59:07.247 に答える
1

行が配列に読み込まれている場合、たとえば、スカラーコンテキストで評価することにより、配列内の要素の数を取得できます。

my $elems = @line;

または本当に確かに

my $elems = scalar(@line);

その場合scalarは冗長ですが、そうでなければリストコンテキストになる場所にスカラーコンテキストを強制するのに便利です。で配列の最後の要素のインデックスを見つけることもできます$#line

その後、要素 3 以降のすべてを取得する場合は、配列スライスを使用できます。

my @threeonwards = @line[3 .. $#line];
于 2013-03-15T14:00:29.343 に答える