2013年8月18日日曜日

開発環境

『初めてのPerl 第6版』(Randal L. Schwartz, Tom Phoenix, brian d foy 共著、近藤 嘉雪 訳、オライリー・ジャパン、2012年、ISBN978-4-87311-567-2)の13章(ディレクトリ操作)の13.13(練習問題)7を解いてみる。

その他参考書籍

7.

コード(BBEdit)

sample.pl

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

my $option = $ARGV[0] eq "-s";
shift @ARGV if $option;

my($src, $dst) = @ARGV;

$dst = File::Spec->catfile($dst, basename $src) if -d $dst;

if ($option) {
  symlink $src, $dst or warn "can't symlink $src to $dst: $!";
} else {
  link $src, $dst or warn "can't link $src to $dst: $!";    
}

入出力結果(Terminal)

$ ls tmp*
tmp.txt
$ ./sample.pl tmp.txt tmp1.txt
$ ./sample.pl -s tmp.txt tmp2.txt
$ ls -l tmp*
-rw-r--r--@ 2 kamimura  staff  6  8 16 12:08 tmp.txt
-rw-r--r--@ 2 kamimura  staff  6  8 16 12:08 tmp1.txt
lrwxr-xr-x  1 kamimura  staff  7  8 18 15:11 tmp2.txt -< tmp.txt
$

ちなみにpython3.3の場合。

コード(BBEdit)

sample.py

#!/usr/bin/env python3.3
## Copyright (C) 2013 by kamimura
#-*- coding: utf-8 -*-

import os, sys

option = ""
src = ""
dst = ""

if sys.argv[1] == "-s":
    option, src, dst = sys.argv[1:]
else:
    src, dst = sys.argv[1:]

if os.path.isdir(dst):
    dst = os.path.abspath(dst) + os.path.sep + os.path.basename(src)

if option == "-s":
    os.symlink(src, dst)
else:
    os.link(src, dst)

入出力結果(Terminal)

$ ls tmp*
tmp.txt
$ ./sample.py tmp.txt tmp1.txt
$ ./sample.py -s tmp.txt tmp2.txt
$ ls -l tmp*
-rw-r--r--@ 2 kamimura  staff  6  8 16 12:08 tmp.txt
-rw-r--r--@ 2 kamimura  staff  6  8 16 12:08 tmp1.txt
lrwxr-xr-x  1 kamimura  staff  7  8 18 15:19 tmp2.txt -< tmp.txt
$

0 コメント:

コメントを投稿