続・初めてのPerl 第2章 「中級者の基礎知識」
「初めてのPerl」を一通り読み終えたので、「続・はじめてのPerl」を読み始めてみる。初めてのPerl の時と同じく、備忘録(+自分への戒め)として練習問題の回答をメモしていく。
ex02-1
#!/usr/bin/perl use strict; my @files = grep {-s $_ < 1000;} @ARGV; my @results = map " $_\n", @files; print @results;
ex02-2
#!/usr/bin/perl use strict; # 初めてのPerl p.204 my $dir = "/etc"; my @dir_files = glob "$dir/* $dir/.*"; while (1) { print "Enter a pattern (except slash /): "; chomp(my $pattern = <STDIN>); last if $pattern =~ /^\s*$/; if ($pattern =~ /\//) { print "you can't use slash / as a pattern!\n"; next; } my @results = eval { grep /$pattern/, @dir_files; }; if ($@) { print "invalid pattern: $@"; } else { print map "$_\n", @results; print "\n"; } }
反省点
foreach の代わりに map が使える場面では map を使おう。