2011年7月1日金曜日

開発環境

  • 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(練習問題)、6を解いてみる。

 

6.

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

コード(TextWrangler)

#!/usr/bin/perl
use strict;
use warnings;
use File::Basename;
use File::Spec;

my($old_name,$new_name)=@ARGV;

# ディレクトリかどうか判定
if(-d $new_name){
  my $basename=basename $old_name;
  $new_name
  =File::Spec->catfile($new_name,$basename);
  }
  
link $old_name,$new_name 
  or warn "Cant't link '$old_name'"
      ."to '$new_name': $!";

問題のヒントから、コードは問5のコードのrenameをlinkに書き換えるだけ。

用意したファイルとその中身。

sample1

2番目のコマンドライン引数にsample2を指定

入出力結果(Ternimal)

(folderは名前の通り、ディレクトリ)

sample2を開いてみる。

sample1と同じファイルへのlinkが作成できた。

続いてコマンドラインの第2引数にディレクトリ(folder)を指定

入出力結果(Ternimal)

folderのsample1を開くと

folder/sample1

ディレクトリにsample1と同じファイルへのlinkを作成することにも成功!

ちなみに私が使ってるオペレーティングシステム、Mac OS Xではハードリンクをサーポートしてるみたい。

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

0 コメント:

コメントを投稿