[已解决]输入和输出相对应的问题

[已解决]输入和输出相对应的问题

写一个程序,读入一串数字(一个数字一行),将和这些数字对应的人名(下面列出的)输出来。(将下面的人名列表写入代码中):fred betty barney dino Wilma pebbles bamm-bamm。
例如,当输入为1,2,4 和2,则输出的为fred, betty, dino, 和betty

我写的这个不行
#! /usr/bin/perl
@a=qw(fred betty barney dino wilma pebbles bamm-bamm);
@b=<stdin>;
print "$a[@b]";
怎么样才能让输出和输入一一对应呢

没有人懂吗?
你这样做一方面,只能打印出最后一次stdin读入的数字索引对应的人名
并且必须用Ctrl+D来结束输入
你可以试试使用循环来作
而且$b=<STDIN>也许更适合一点
while (<STDIN>)...

另外, 不要使用a, b这样的名字作为变量名
主要是序号对不上数组里面的第一个对应的下标是0不是1
想出来啦,这就是我最终想要的结果

#! /usr/bin/perl
@a = qw(fred betty barney dino wilma pebbles bamm-bamm);
unshift (@a," ");
$content=<stdin>;
while(1){
$num=<stdin>;
print "$a[$num]\n";
}
#!/usr/bin/perl -w

my @sky=qw/a b c d e f g/;
print "Enter the number:\n";
chomp($num=<STDIN>);
print "$sky[$num-1]\n";


这样似乎可以解决。记得是《perl入门4》上的习题吧!


QUOTE:
原帖由 icecoldheart 于 2007-11-7 12:14 发表
想出来啦,这就是我最终想要的结果

#! /usr/bin/perl
@a = qw(fred betty barney dino wilma pebbles bamm-bamm);
unshift (@a," ");
$content=;
while(1){
$num=;
print "$a[$num]\n";
}

#! /usr/bin/perl

@a = qw(fred betty barney dino wilma pebbles bamm-bamm);
$content=<stdin>;
chop $content;
$num=$content-1;
if($content <= 7 ){
print "$a[$num]\n";
}elsif($content > 7){
print "out of range";
};
发现一个问题 命题是当输入为1,2,4 和2,则输出的为fred, betty, dino, 和betty

好像上面都不能实现 列表输入和列表输出呢???


QUOTE:
原帖由 MOMOyyNix 于 2007-12-28 10:15 发表
发现一个问题 命题是当输入为1,2,4 和2,则输出的为fred, betty, dino, 和betty

好像上面都不能实现 列表输入和列表输出呢???

输入以后,设置为不是直接输出,把他们存入数组,然后一次输出不就行了