-3

次のようなフラットファイルから読み取られる配列があります。

@Array = ('01026¦Cummington¦Massachusetts¦MA',
          '01026¦West Cummington¦Massachusetts¦MA',
          '01030¦East Hampton¦Massachusetts¦MA',
          '01027¦Easthampton¦Massachusetts¦MA',
          '01027¦Loudville¦Massachusetts¦MA',
          '01030¦Mount Tom¦Massachusetts¦MA',
          '01027¦Westhampton¦Massachusetts¦MA',
          '01028¦East Longmeadow¦Massachusetts¦MA',
          '01029¦Big Pond¦Massachusetts¦MA');

私がやりたいのは、@ Array [1]の3つのランダムな「数値」を取得することです。そのため、次のような出力が得られます。

print "01028
       01026
       01030";
4

1 に答える 1

6

私があなたを正しく理解List::Utilしていれば、のshuffle関数を使用して実装するのは簡単です。

#!/usr/bin/env perl

use strict;
use warnings;

use List::Util qw( shuffle );

my @array = (
    '01026¦Cummington¦Massachusetts¦MA',
    '01026¦West Cummington¦Massachusetts¦MA',
    '01030¦East Hampton¦Massachusetts¦MA',
    '01027¦Easthampton¦Massachusetts¦MA',
    '01027¦Loudville¦Massachusetts¦MA',
    '01030¦Mount Tom¦Massachusetts¦MA',
    '01027¦Westhampton¦Massachusetts¦MA',
    '01028¦East Longmeadow¦Massachusetts¦MA',
    '01029¦Big Pond¦Massachusetts¦MA',
);

my @shuffled_array = ( shuffle 0 .. @array - 1 )[ 0 .. 2 ];
print join "\n", map $array[$_] =~ /^(\d+)/, @shuffled_array;
于 2012-08-19T16:44:05.300 に答える