2011年10月24日のパターンで日付を取得し、これを10,24,2011に変換するPerlスクリプトをコーディングしようとしています。ハッシュ値を持つ配列要素を置換する
これを行うために、私は、月の名前をキーとし、月の位置を値として表す数値を持つハッシュを用意しました。
私は入力文字列を読んで、上記の形式から月名を抽出する正規表現を使用します。
この月の名前を、月としてキーに対応する値に置き換えます。
これまでに記述したスクリプトはありますが、それは私のためには機能しません。
@dates配列は、この形式のすべての要素を持っています - > 10月24日、2011年
%days=("January",01,"February",02,"March",03,"April",04,"May",05,"June",06,"July",07,"August",08,"September",09,"October",10,"November",11,"December",12);
@output = map{
$pattern=$_;
$pattern =~ s/(.*)\s/$days{$1};
} @dates;
foreach $output (@output)
{
print $output."\n";
}
ここで私は、このコードをどうしようとしています何の少し説明です。
@outputには、月名をハッシュで定義されている対応する数値で置き換えた新しい書式設定された配列があります。
map関数は、配列の要素をオンザフライで変換するために使用されます。
空白が続く文字の列は
この2011年は$ 1で参照される、パターン、10月24日から月名を抽出するために使用する正規表現です。
私は$日間{$ 1}
なぜ「DateTime」を使用しないのですか? – CanSpice
「働いていない」とはどういう意味ですか?これは '$ pattern =〜s /(* *)\ s/$ days {$ 1};'の簡単な構文エラーのように見えます; - 3番目の '/'文字が欠けていますが、あなたが完全に動作する小さなスクリプトを提供する場合、フィードバックを与えてください。 (ちなみに、CanSpiceの提案は 'DateTime'を使うのが良いですが、_some_ dateモジュールがいくつかのLinuxディストリビューションでは簡単に利用可能で、_other_dateモジュールは他のモジュールでも簡単に利用できることがわかりました。 。) – sarnold
'map'文を' s /../../ my @output = @dates;と書くことを考えてください。 –