2013年1月30日水曜日

開発環境

『続・初めてのPerl 改訂版』(Randal L. Schwartz, brian d foy, Tom Phoenix 著、伊藤 直也田中 慎司吉川 英興 監訳、株式会社ロングテール/長尾 高弘 訳、オライリー・ジャパン、2006年、ISBN4-87311-305-9)の8章(ファイルハンドルへのリファレンス), 8.6(練習問題)1を解いてみる。

その他参考書籍

1.

コード(BBEdit)

sample.pl

#!/usr/bin/env perl
use strict;
use warnings;
use utf8;
use 5.016;
binmode STDOUT, ':utf8';
binmode STDIN, ':utf8';
use IO::Tee;

my $fh;
my $string;
my $dst;
print "出力先をファイル(f)、スカラー(s)、両方(t)から選択: ";
while(1){
    chomp($dst =  <STDIN>);
    last if $dst =~ /^[fst]$/;
    print "f、s、tのいずれかを入力してください\n";
}

given($dst){
    when( 'f' ){ open $fh, '>', 'date.log';}
    when( 's' ){ 
        $string = "";
        open $fh, '>', \$string;;
    }
    when( 't' ){
        $string = "";
        open my $file_fh, '>>', 'date.log';
        open my $scalar_fh, '>', \$string;
        $fh = IO::Tee->new($file_fh, $scalar_fh);
    }
}
print $fh localtime . "\n";
print STDOUT $string if $dst =~ /^[st]$/;

入出力結果(Terminal)

$ ./sample.pl
出力先をファイル(f)、スカラー(s)、両方(t)から選択: perl
f、s、tのいずれかを入力してください
f
$ cat date.log
Wed Jan 30 18:23:28 2013
$ ./sample.pl
出力先をファイル(f)、スカラー(s)、両方(t)から選択: s
Wed Jan 30 18:23:37 2013
$ cat date.log
Wed Jan 30 18:23:28 2013
$ ./sample.pl
出力先をファイル(f)、スカラー(s)、両方(t)から選択: t
Wed Jan 30 18:23:45 2013
$ cat date.log
Wed Jan 30 18:23:28 2013
Wed Jan 30 18:23:45 2013
$

pythonの場合。

sample.py

コード(BBEdit)

#!/usr/bin/env python3.3
#-*- coding: utf-8 -*-

import datetime, re

dst = ""
string = ""
while True:
    dst = input("出力先(ファイル(f)、文字列(s)、両方(b))を入力: ")
    if re.search(r"[^fsb]", dst):
        print("f、s、bのいずれかを入力してください")
    else:
        break

now = datetime.datetime.now().ctime()
if re.search(r"^[fb]$", dst):
    with open('date.log', 'a') as f:
        f.write(now + "\n")
if re.search(r"^[sb]$", dst):
    s = now
    print(s)

入出力結果(Terminal)

$ ./sample.py
出力先(ファイル(f)、文字列(s)、両方(b))を入力: python
f、s、bのいずれかを入力してください
出力先(ファイル(f)、文字列(s)、両方(b))を入力: f
$ cat date.log
Wed Jan 30 18:56:40 2013
$ ./sample.py
出力先(ファイル(f)、文字列(s)、両方(b))を入力: s
Wed Jan 30 18:57:06 2013
$ cat date.log
Wed Jan 30 18:56:40 2013
$ ./sample.py
出力先(ファイル(f)、文字列(s)、両方(b))を入力: b
Wed Jan 30 18:57:14 2013
$ cat date.log
Wed Jan 30 18:56:40 2013
Wed Jan 30 18:57:14 2013
$

0 コメント:

コメントを投稿