開発環境
- OS X Lion - Apple(OS)
- TextWrangler(Text Editor) (BBEditの機能制限無料版、light版)
- Script言語:Perl
『続・初めてのPerl 改訂版』(Randal L. Schwartz, brian d foy, Tom Phoenix 著、伊藤 直也、田中 慎司、吉川 英興 監訳、株式会社ロングテール/長尾 高弘 訳、オライリー・ジャパン、2006年、ISBN4-87311-305-9) の8章(ファイルハンドルへのリファレンス), 8.6(練習問題)1を解いてみる。
その他参考書籍
1.
まず、準備としてMacPortsでモジュール、IO::Teeをインストール。
$ sudo port -v install p5.16-io-tee
モジュールのインストールってcpanから直接した方がいいのかな。。
コード(TextWrangler)
sample.pl
#!/usr/bin/env perl use strict; use warnings; use utf8; use 5.016; binmode STDIN, ':utf8'; binmode STDOUT, ':utf8'; use IO::Tee; my $fh; my $string; while(1){ print "出力先(ファイル(f)、文字列(s)、両方(t))を入力: "; chomp(my $out = <STDIN>); given($out){ when(/^f$/i){ open $fh, ">", "log"; } when(/^s$/i){ open $fh , ">", \$string; } when(/^t$/i){ open my $log_fh, ">", "log"; open my $scalar_fh, ">",\$string; $fh = IO::Tee->new($log_fh, $scalar_fh); } default { print "入力を確認してください。\n"; next; } } last; } my $date = localtime; my $wday = (localtime)[6]; print $fh "date: $date\nwday: $wday\n"; print STDOUT $string if $string;
入出力結果(Terminal)
$ rm log $ ./sample.pl 出力先(ファイル(f)、文字列(s)、両方(t))を入力: f $ cat log date: Fri Oct 26 17:30:51 2012 wday: 5 $ ./sample.pl 出力先(ファイル(f)、文字列(s)、両方(t))を入力: s date: Fri Oct 26 17:30:55 2012 wday: 5 $ rm log $ ./sample.pl 出力先(ファイル(f)、文字列(s)、両方(t))を入力: t date: Fri Oct 26 17:31:06 2012 wday: 5 $ cat log date: Fri Oct 26 17:31:06 2012 wday: 5 $
0 コメント:
コメントを投稿