2011年7月2日土曜日

開発環境

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

 

7.

やり方の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 $sym;
if($ARGV[0] eq "-s"){
  $sym="-s";
  shift @ARGV;
  }
my($old_name,$new_name)=@ARGV;

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

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

sample1

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

入出力結果(Ternimal)

sample2を開いてみる。

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

続いてコマンドラインの上記と同じことを、引数の前に-2スイッチを指定して、sample2、sample3を渡してみる。

入出力結果(Ternimal)

sample3を開くと

sample3

同じデータにアクセス。

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

コードは記述できたものの、ハードリンクとシンボリックリンク(ソフトリンク)の使い方の違いの試し方がよくわからない。。けどとりあえず次へ進むことに。

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

0 コメント:

コメントを投稿