2011年7月13日水曜日

開発環境

  • Mac OS X Snow Leopard (OS)
  • TextWrangler(Text Editor) (いずれはBBEditを入手したい!)
  • Script言語:Perl

『初めてのPerl 第5版』(Randal L. Schwartz, Tom Phoenix, brian d foy 共著、近藤 嘉雪 訳、オライリー・ジャパン、2009年、ISBN978-4-87311-427-9) の16章(プロセス管理), 16.8(練習問題)、2を解いてみる。

 

2.

やり方の1つ。(「やり方は何通りもある」(TIMTOWTDI(There Is More Than One Way To Do It.)))

コード(TextWrangler)

#!/usr/bin/perl
use strict;
use warnings;

# カレントディレクトリにファイルを書き出す
open STDOUT,">ls.out" or 
 die "Cannot write to ls.out: $!";
open STDERR,">ls.err" or 
  die "Cannot write to ls.err: $!";

# システムのルートディレクトリに移動
chdir "/" or die "Cannot chdir /: $!";
exec "ls","-l" or die "Cannot exec ls: $!";

入出力結果(Ternimal)

カレントディレクトリに作成されたファイル

ls.out

エラーは起こらなかったのでカレントディレクトリにファイル、ls.errは出力されない。

エラーを出力してみる。

コード(TextWrangler)

#!/usr/bin/perl
use strict;
use warnings;

# カレントディレクトリにファイルを書き出す
open STDOUT,">ls.out" or die "Cannot write to ls.out: $!";
open STDERR,">ls.err" or die "Cannot write to ls.err: $!";

# システムのルートディレクトリに移動
chdir "/" or die "Cannot chdir /: $!";
# エラーを出力するため空っぽに
exec "","" or die "Cannot exec ls: $!";

入出力結果(Ternimal)

カレントディレクトリに作成されたファイル

ls.err

今度はエラーが発生したのでカレントディレクトリにファイル、ls.outは作成されなかった。

何度か最初のコードを実行しているうちに、上記に書いたようにファイル、ls.outのみ作成される場合と、ls.out(中身は上記と一緒)、ls.err(中身は空っぽ)の両方が作成される場合とがあった。理由は分からず...?

ファイルの用意が必要な場合はO'Reilly Japan - 初めてのPerl 第5版の関連ファイルのプログラム例に含まれているものを使用しています。

0 コメント:

コメントを投稿