0

Perl で配列から特定の要素を取得しようとしていますが、コードが機能しません

print "Enter the column numbers you want separated by comma "; 
$temp=<>; 

@shortdays = qw/Mon Tue Wed Thu Fri Sat Sun/; 
@weekdays = @shortdays[scalar $temp];  

print @weekdays;
4

5 に答える 5

0
use strict;
use warnings;

my @shortdays = qw'Mon Tue Wed Thu Fri Sat Sun';

print "Enter the column numbers you want\n";

my $line = <STDIN>;
my @ids = $line =~ /[0-7]/g;
my @days = @shortdays[ @ids ];

print join( ', ', @days ), "\n";

$lineとは 1 回だけ必要なので、@idsそれらを使用せずに済ませることができます。

# my $line = <STDIN>;
# my @ids = $line =~ /[0-7]/g;
# my @days = @shortdays[ @ids ];
my @days = @shortdays[ <STDIN> =~ /[0-7]/g ];

なぜ/[0-7]/gあなたは尋ねるかもしれません。

  • 有効な数値は 0..7 のみです。
  • ユーザーが数字を区切るために何を使用しているかを知る必要はありません。
  • /g一致のリストが表示されます。

正規表現は 1 桁の数字のみに一致するため、ユーザーが数字を区切るために何を使用する必要があるかを指定する必要はありません。実際、(この場合) ユーザーはそれらを分離する必要さえありません。

于 2013-04-02T18:02:40.803 に答える