12章練習問題
問1
#!/usr/bin/perl use strict; use warnings; print "ディレクトリ名を入力してください。\n"; chomp(my $dir = <STDIN>); ($dir =~ /^\s*$/) ? chdir : chdir $dir or die "ディレクトリの移動に失敗しました。\n"; print "$_\n" for <*>;
動作に問題はないけど、エラーメッセージをもうちょっとわかりやすくした方がよかったかも。
問2
#!/usr/bin/perl use strict; use warnings; print "ディレクトリ名を入力してください。\n"; chomp(my $dir = <STDIN>); ($dir =~ /^\s*$/) ? chdir : chdir $dir or die "ディレクトリの移動に失敗しました。\n"; print "$_\n" for <* .*>;
<* .*>はドット以外で始まるファイルをアルファベット順に並べたものの後ろに、ドットで始まるファイルをアルファベット順で並べたものがあるリストを返す。つまり全体で見れば、アルファベット順に並んでいないので、sortする必要がある。
print "$_\n" for sort <* .*>;
問3
#!/usr/bin/perl use strict; use warnings; print "ディレクトリ名を入力してください。\n"; chomp(my $dir = <STDIN>); ($dir =~ /^\s*$/) ? chdir : chdir $dir or die "ディレクトリの移動に失敗しました。\n"; opendir DIR, "." or die "ディレクトリのオープンに失敗しました。\n"; print "$_\n" for sort readdir DIR;