おおお
- いきなりびっくりした。こういうのありなのか。
"Hiroshi Yuki , 70,83,41",
my ( $name, @score ) = split( /,/, $line );
- つまり、
Hiroshi Yuki , 70,83,41
はカンマでsplitされHiroshi Yuki
70
83
41
になる
- そして、最初の
Hiroshi Yuki
が$nameに入り、それ以降の数字が@scoreに入る
- なるほど
use strict;
use warnings;
my @data = (
"Hiroshi Yuki , 70,83,41",
"Hanako Sato , 100,93,69",
"tomura,46,33,100"
);
foreach my $line (@data) {
my ( $name, @score ) = split( /,/, $line );
my $sum = 0;
foreach my $item (@score) {
$sum += $item;
}
print "$name = $sum \n";
}
問題6-4 16進数の表を作る
use strict;
use warnings;
my @array = ( 0 .. 255 );
foreach (@array) {
if ( $_ == 0 ) {
printf( "%02X ", "$_" );
}
elsif ( $_ % 16 == 0 ) {
printf( "\n%02X ", "$_" );
}
else {
printf( "%02X ", "$_" );
}
}
foreach my $value (0..255){
printf ("%02X " , $value);
print "\n" if ($value %16 == 15);
}
- 美しい!
- うちの場合、16進数で、16で割りきれたら・・・って考えたけど、それだと最初の0も割り切れたことになったので、例外的にif分の最初に書いて処理する必要があった。
- 結城先生は16で割ってあまりが15だったら、という式。シンプルでわかりやすい。
- 出力される結果は同じだけど、短くシンプルで分かりやすくありたいなぁ。
クリスマスツリーを作ろう
use strict;
use warnings;
my @twig1 = ( '*', '!', '%', '*', '/', '*' );
my @twig2 = (
'*', '!', '%', '*', '/', '*', '+', '-',
'!', '.', '*', '*', '%', '/', '*', '+'
);
my @twig = @twig1;
my @branch = ();
foreach my $leaf (@twig) {
print ' ' x ( @twig - @branch ), @branch, $leaf, reverse(@branch), "\n";
push( @branch, $leaf );
}
my @twig = @twig2;
my @branch = ();
foreach my $leaf (@twig) {
print ' ' x ( @twig - @branch ), @branch, $leaf, reverse(@branch), "\n";
push( @branch, $leaf );
}