Perl練習問題の解答 for ablaboさん
なんかエラーが起こったりとかするんで、下記のプログラムはあてにならないらしい。指摘されちゃいました。いい加減だなあ自分^-^;;;
id:ablaboさんのところの練習問題(http://d.hatena.ne.jp/ablabo/20060129/1138529862)で「自分ならこう書く」を書かなきゃってことで。
#! /usr/local/bin/perl # ex3-2 use strict; use warnings; my @person = qw( fred betty barney dino wilma pebbles bamm-bamm ); print " 表\示したい人名に対応する数を入力してください。数の入力は複数回可能\です。 入力を終了するときCtrl + Zキーを押してください。 数と人名の対応は以下のようになっています。\n"; ## 配列personの内容を表示(indexは1から数える) my $index = 0; foreach my $person_name(@person){ print " " . ++$index . " - " . $person_name . "\n"; } chomp(my @nums = <STDIN>); print "\n人名の表\示を開始します。\n"; foreach(@nums){ #if($_ = /\D/ and defined($person[$_-1])){ if($_ =~ /\d/ and defined($person[$_-1])){ print "$person[$_-1]\n"; }else{ print "入力された数$_は不正です。1から$#personまでの数を入力してください。\n"; } }
いじったポイントは
my @person = qw( dymmy_item fred betty barney dino wilma pebbles bamm-bamm );
と、ダミーをはさまなくてよいようにしたこと。
@tableという特に意味のない変数を極力使わないようにしたこと。
($mini_num <= $_) and ($_ <= $max_num)
という条件を、$_の配列が定義してある範囲で判定するようにしたこと。
$mini_numについては特に変数(定数っぽく)で使う必要はないかと思って1で固定にしました。