2013年7月12日金曜日

開発環境

『初めてのPerl 第6版』(Randal L. Schwartz, Tom Phoenix, brian d foy 共著、近藤 嘉雪 訳、オライリー・ジャパン、2012年、ISBN978-4-87311-567-2)の4章(サブルーチン)の4.12(練習問題)5を解いてみる。

その他参考書籍

5.

コード(BBEdit)

sample.pl

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

sub greet {
    state @last;
    my $name = shift;
    print "Hi $name! ";
    if (@last) {
        print "I've seen: @last\n";
    } else {
        print "You are the first one here!\n";
    }
    push @last, $name;
}

greet( "Fred" );
greet( "Barney" );
greet( "Wilma" );
greet( "Betty" );

入出力結果(Terminal)

$ ./sample.pl
Hi Fred! You are the first one here!
Hi Barney! I've seen: Fred
Hi Wilma! I've seen: Fred Barney
Hi Betty! I've seen: Fred Barney Wilma
$

ちなみにpython3.3の場合。

コード(BBEdit)

sample.py

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

def f():
    last = []
    def g(name):
        nonlocal last
        print("Hi {0}! ".format(name), end="")
        if last:
            print("I've seen: {0}".format(" ".join(last)))
        else:
            print("You are the first one here!")
        last.append(name)
    return g

greet = f()
greet("Fred")
greet("Barney")
greet("Wilma")
greet("Betty")

入出力結果(Terminal)

$ ./sample.py
Hi Fred! You are the first one here!
Hi Barney! I've seen: Fred
Hi Wilma! I've seen: Fred Barney
Hi Betty! I've seen: Fred Barney Wilma
$

0 コメント:

コメントを投稿