開発環境
- macOS Mojave - Apple (OS)
- Emacs (Text Editor)
- Windows 10 Pro (OS)
- Strawberry Perl (WindowsのPerlの言語処理系)
- Visual Studio Code (Text Editor)
- Perl 5.30 (プログラミング言語)
続・初めてのPerl 改訂第2版 (Randal L. Schwartz(著)、brian d foy(著)、Tom Phoenix(著)、伊藤 直也(監修)、長尾 高弘(翻訳)、オライリージャパン)の8章(ファイルハンドルへのリファレンス)、8.7(練習問題)2の解答を求めてみる。
コード
#!/usr/bin/perl
use strict;
use warnings;
my $filename = "temp.log";
open my $in_fh, '<', $filename or die "Can't open '$filename': $!";
my %names = ();
my $dirname = "info";
mkdir $dirname or die "Can't mkdir '$dirname': $!";
chdir $dirname or die "Can't chdir '$dirname': $!";
while (<$in_fh>) {
/^([^:]+)/;
my $name = lc $1;
unless ($names{$name}) {
open my $out_fh, '>', "$name.info" or die "Can't open $name.info: $!";
$names{$name} = $out_fh
}
print {$names{$name}} $_;
}
入出力結果(Zsh、PowerShell、Terminal)
% cat info/ginger.info
Ginger: 1 crab
Ginger: 2 papayas
Ginger: 3 crabs
Ginger: 4 coconuts
Ginger: 3 flowers
Ginger: 5 bananas
Ginger: 4 crabs
Ginger: 2 papayas
Ginger: 2 crabs
Ginger: 3 crabs
Ginger: 4 flowers
Ginger: 2 coconuts
Ginger: 5 coconuts
Ginger: 5 flowers
% cat info/gilligan.info
Gilligan: 1 papaya
Gilligan: 4 papayas
Gilligan: 1 flower
Gilligan: 3 crabs
Gilligan: 3 papayas
%
0 コメント:
コメントを投稿