初めてのPerl 第5章

練習問題をメモ。

ex05-1
#!/usr/bin/perl -w
use strict;

my %last_name = (
    "fred" => "flintstone",
    "barney" => "rubble",
    "wilma" => "flintstone",
    );

print "Enter a first name: ";
chomp(my $first_name = <STDIN>);

if (exists $last_name{$first_name}) {
    print "<<${first_name}>>'s last name is <<$last_name{$first_name}>>.\n";
} else {
    print "There's no first name for <<${first_name}>>.\n";
ex05-2
#!/usr/bin/perl -w
use strict;

chomp(my @words = <STDIN>);
my %sum;

foreach my $word (@words) {
    $sum{$word}++;
}

foreach my $word (sort keys %sum) {
    print "<<$word>> appeared $sum{$word} times.\n";
}

反省点

ex05-1 の「<<$first_name>>'s」のように、変数名の直後に「英文字、数字、下線」が来たときは「<<${first_name}>>'s」としてブレースを付けよう。p.37「変数名は、意味をなす限り、できるだけ長くなるように解釈されます。」