アプリ版:「スタンプのみでお礼する」機能のリリースについて

sub totalを自作して以下のコードと組み合わせて走らせなさいという問題です。

my @fred = qw{1 3 5 7 9};
my $fred_total = &total(@fred);
print "The total of \@fred is $fred_total.\n";
print "Enter some numbers on separate lines: ";
my $user_total = &total(<STDIN>);
print "The total of those numbers is $user_total.\n";

ここの、<STDIN>で、標準入力にどのように入力したら和が正確に表示されるのでしょうか?
1 3 5 7 9 エンター Ctrl+D
1,3,5,7,9 エンター Ctrl+D
qw{1,3,5,7,9} エンター Ctrl+D
などいろんな入力を試しましたが、どれも配列として受け取ってくれず、
Argument "1,3,5,7,9\n" isn't numeric
などのエラーがでてしまいます。
on separate linesの意味がよくわかりません。
「線で区切れ」と言われても・・・、です。

標準入力からの配列の入力方法をご存知の方、ぜひご教授ください。

A 回答 (2件)

単純に



1(エンター)
3(エンター)
5(エンター)
7(エンター)
9(エンター)
CTRL+D(またはCTRL+Z 、windows系)
で良いと思います。
セパレートラインズは、要するに改行で区切れということかと
sub total {
my $sum=0;

foreach (@_){
$sum += $_;
}
return $sum;
}
    • good
    • 0
この回答へのお礼

>セパレートラインズは、要するに改行で区切れという
ことかと
ズバリそのとおりでしたっ。
OSはfreeBSDなので、Ctrl+Dでした。
ご回答ありがとうございましたっ。

お礼日時:2006/03/09 16:27

こんなんでどうでしょうか?


入力データはカンマで区切られた文字列です。

my @fred = qw{1,3,5,7,9};
my $fred_total = &total(@fred);
print "The total of \@fred is $fred_total.\n";
print "Enter some numbers on separate lines: ";
my $user_total = &total(<STDIN>);
print "The total of those numbers is $user_total.\n";

sub total {
  my $Param = shift;
  my @Data = split(/,/, $Param); # カンマで区切られた値を@Data配列にセット(/,/を/ /に変えれば区切りはスペース)
  my $Sum = 0;

  foreach $Num (@Data) {     # 配列のよう素数だけループして合計を求める
    $Sum += $Num;
  }

  return $Sum           # 求めた合計を返す
}
    • good
    • 0
この回答へのお礼

なるほど。split関数を使うのもアリですね。
ご回答ありがとうございました。

お礼日時:2006/03/09 16:26

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!