【perl】配列への代入と内容物のprint

#! /usr/bin/perl

use strict;
use warnings;

#スカラー
#,で区切って()で囲んだものをリストという。
my ($kokugo, $suugaku, $rika) = (90, 50, 76);

print "$kokugo\n$suugaku\n$rika\n\n";


#配列
my @score = (70, 650, 7564);

print "@score\n";
#出力結果 => 70 650 7564 => スペースで区切られて一列で出力される。
print @score, "\n";
#出力結果 => 706507564 => ""で囲まないとつながって一列で出力される。
print '@score',"\n";
#出力結果=> @score => 当然、変数展開されません。
print "$score[0]\n$score[1]\n$score[2]\n\n";


my $sum = 0;

=head
foreach my $item (@score){#$itemに@scoreの要素を1つずつ代入
	#$sum = $sum + $item;
#下記は、$sum = $sum + $item;と同義
	$sum += $item;
#+のあとには、スペースを入れてはだめ。
}
=cut

#上記の$itemを省略することができる
foreach (@score){#foreach $_ (@score)と同じ
	$sum += $_;
}

print "$sum\n\n";


#文字列も配列に代入できちゃう。
my @week = ("mon", "tue", "wed", "thu", "fri", "sat", "sun");
print "@week\n";

#qw()を使うと、スペースを区切りとして要素を文字列としてリスト代入してくれるよ。
my @week1 = qw(mon1 tue1 wed1 thu1 fri1 sat1 sun1);
print "@week1\n\n";


#qwを使うと、文字列としてしか代入されないのか実験してみた。
my $x = 34;
my $y = 634;

my @week2 = qq(qw($x $y));
my @week3 = qw("$x" "$y");
my @week4 = qw($x $y);

print "@week2\n";
#出力結果=> qw(34 634) どうやら@week2[0]にqw($x $y)と代入されたもよう。
print "@week3\n\n";
#出力結果=> "$x" "$y" @week2[0]に"$x"、@week[1]に"$y"が代入されたもよう。""で囲んでも変数展開はなされない。

print "@week4\n";
#出力結果=> $x $y
print '@week4',"\n";
#出力結果=> @week4
print @week4,"\n";
#出力結果=> $x$y

#結論:qwを使うと、やっぱり文字列代入される。


#メールアドレスをprintするとき
#print "kokokokoko@kokoko.com\n";
#出力結果 => @kokokoという配列が定義されていない、とエラーがでる。
print 'kokokokoko@kokoko.com',"\n";
#出力結果 => kokokokoko@kokoko.com