2012年12月28日金曜日

開発環境

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

その他参考書籍

1.

コード(BBEdit)

sample.pl

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

chomp(my $dir = <STDIN>);
$dir = "." if $dir =~ /^\s*$/;
die unless -d $dir;
chdir $dir or die "can't chdir to $dir: $!";
opendir my $dh, "." or die "cann't open $dir: $!";
my @files = ();
foreach(readdir $dh){
  next if $_ =~ /^\./;
  push @files, $_;
}
for(sort @files){
  print "$_\n";
}

入出力結果(Terminal)

$ ./sample.pl

.
..
.DS_Store
.out
Oogaboogoo
__pycache__
barney
betty
coconet.dat
date.txt
fred
gilligan.info
ginger.info
hello_world.pl
link_test
log
log_file.txt
lovey.info
ls.err
maryann.info
monkeyman.info
numbers
perl_kamimura_blog
perl_kamimura_blog.html
perl_program1
professor.info
result
sample
sample.pl
sample.pl.bak
sample.py
sample_folder
sample_text
skipper.info
some_file
some_folder
sortable_hash
standings.db
test.out
test.txt
test_folder
test_link
thurston.info
tmp.txt
tmp_folder
total_bytes.dat
untitled text 2.txt
$ ./sample.pl
some_folder
.
..
.DS_Store
sample.pl
some_file
some_file1
some_file2
$ ./sample.pl
abcde
Died at ./sample.pl line 11, <STDIN> line 1.
$

pythonの場合。

sample.py

コード(BBEdit)

#!/usr/bin/env python3.3
#-*- coding: utf-8 -*-

import os, re

dirname = input("ディレクトリ名を入力: ")
if not re.match(r"^/", dirname):
    dirname = "./" + dirname

files = []
try:
    for file in os.listdir(dirname):
        # if re.match(r"^\.", file): continue
        files.append(file)
    for file in sorted(files):
        print(file)
except FileNotFoundError as err:
    print("FileNotFoundError発生! {0}".format(err))
except Exception as err:
    print(err)

入出力結果(Terminal)

$ ./sample.py
ディレクトリ名を入力: 
.DS_Store
.out
Oogaboogoo
__pycache__
barney
betty
coconet.dat
date.txt
fred
gilligan.info
ginger.info
hello_world.pl
link_test
log
log_file.txt
lovey.info
ls.err
maryann.info
monkeyman.info
numbers
perl_kamimura_blog
perl_kamimura_blog.html
perl_program1
professor.info
result
sample
sample.pl
sample.pl.bak
sample.py
sample_folder
sample_text
skipper.info
some_file
some_folder
sortable_hash
standings.db
test.out
test.txt
test_folder
test_link
thurston.info
tmp.txt
tmp_folder
total_bytes.dat
untitled text 2.txt
$ ./sample.py
ディレクトリ名を入力: some_folder
.DS_Store
sample.pl
some_file
some_file1
some_file2
$ ./sample.py
ディレクトリ名を入力: abcde
FileNotFoundError発生! [Errno 2] No such file or directory: './abcde'
$

0 コメント:

コメントを投稿