2011年6月27日月曜日

開発環境

  • 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) の13章(ディレクトリ操作), 13.14(練習問題)、2を解いてみる。

 

2.

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

コード(TextWrangler)

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

chomp(my $dir=<STDIN>);
if($dir=~/^\s*$/){
  chdir or die "移動に失敗! $!\n";
  }else{
  chdir $dir or die "移動に失敗! $!\n";
  }
# 先頭が「.」のファイルも追加
my @files=<* .*>;
foreach(@files){
  print "$_\n";
  }

上記のプログラムはDesktopに保管。

ディレクトリ名に「..(1つ上のディレクトリ)」を入力した場合

入出力結果(Ternimal)

意図したとおり、1つ上のディレクトリ(ホームディレクトリ)に移動したけどファイル名が「.」で始まるものがあとに表示されてる。(アルファベット順にソートされてない。)ということでリストを明示的にsort。

コード(TextWrangler)

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

chomp(my $dir=<STDIN>);
if($dir=~/^\s*$/){
  chdir or die "移動に失敗! $!\n";
  }else{
  chdir $dir or die "移動に失敗! $!\n";
  }
# 先頭が「.」のファイルも追加
my @files=<* .*>;
# アルファベット順にソート
foreach(sort @files){
  print "$_\n";
  }

入出力結果(Terminal

こんどはファイル名(フォルダ名)が意図したとおりアルファベット順に表示された。

ディレクトリ名に空白文字を入力した場合

入出力結果(Ternimal)は意図したとおり、ホームディレクトリに移動して1つめの出力結果と同じ。

ディレクトリ名に存在しないディレクトリ名を入力した場合。

入出力結果(Ternimal)

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

0 コメント:

コメントを投稿