- やればやるほど分からなくなり中
- やり切ればわかるもんなんかなぁ
問題8-2
- 結城先生の答えを参照してわかる範囲で作ったもの。
- whileは何回も無限ループでアプリ・PCを強制終了させたトラウマがあるので、出来ればforを使いたかった
- 当初はsplitで単語を切り出して逐次翻訳してたんだけど、それだと改行やカンマ等がなくなることに気づく
- 模範解答見て、
\w+
と\W*
の使い分けを確認。なるほど。
- ハッシュのところは使い慣れているハッシュリファレンスで。
use strict;
use warnings;
my @array;
my @japan;
my $dict = {
twinkle => "きらきら",
littele => 'ちいさな',
star => 'ほし',
how => 'いかに',
i => 'わたし',
wonder => 'おどろく',
what => 'なに',
you => 'あなた',
are => 'である',
up => 'うえ',
above => 'うえに',
the => 'その',
world => 'せかい',
so => 'とても',
high => 'たかい',
How => 'いかに',
like => 'みたい',
a => 'ひとつの',
diamond => 'ダイアモンド',
in => 'なかに',
sky => 'そら',
};
while (<DATA>) {
while (/(\w+)(\W*)/g) {
if ( exists $dict->{ lc $1 } ) {
push @array, $dict->{ lc $1 };
push @array, $2;
}
}
}
print @array;
問題8-3
use strict;
use warnings;
use FindBin;
my $filename = 'genome2.txt';
my $five_number ='(.)\1{4,}';
my $two_four = '((.)\2){5,}';
my $reverse = '(.)(.)(.)(.)\4\3\2\1';
open( 'FH', "$FindBin::Bin/$filename" );
for my $line (<FH>) {
if ( $line =~ /$five_number/m ) {
print $&,"\n";
}
if ($line =~ /$two_four/m){
print $&,"\n";
}
if ($line =~ /$reverse/m){
print $&,"\n";
}
}
close(FH);
8-3
- 解答の中の
my ($html) = @_;
がわからなくて悩む
- カッコで囲むってことはサブルーチン引数「@_」のコピーってこと?
my $html = shift @_;
に変えてもエラーでなかった。
my $html = @_;
にすると、要素数が帰ってくる。
- 自分の解答と模範解答見て、その差に愕然とする