2012年12月29日土曜日

開発環境

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

その他参考書籍

3.

コード(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

.
..
.appcfg_nag
.bash_history
.bash_profile
.bash_profile.macports-saved_2011-12-06_at_18:40:28
.bash_profile.pysave
.cache
.calibre_calibre GUI.lock
.CFUserTextEncoding
.config
.cpan
.cpanplus
.cups
.dropbox
.DS_Store
.dvdcss
.emacs.d
.emacs.el
.emacs.el~
.exrc
.fontconfig
.fonts
.fonts.cache-1
.gdb_history
.gem
.ghc
.gnupg
.idlerc
.inputrc
.irb_history
.KeyHoleTV
.lesshst
.local
.macports
.MakeMKV
.mono
.mysql_history
.pearrc
.pyhistory
.pystartup
.recently-used
.recently-used.xbel
.rnd
.serverauth.87078
.sh_history
.subversion
.swl
.swm
.swn
.swo
.swp
.Trash
.viminfo
.vimrc
.wing101-4
.Xauthority
.Xcode
.Xmodmap
Calibre Library
Desktop
Documents
Downloads
Dropbox
KindleGen
Library
Movies
Music
nltk
nltk_data
pear
Pictures
Projects
Public
Sites
$ ./sample.pl
.
.
..
.DS_Store
.out
__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
Oogaboogoo
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
can't chdir to abcde: No such file or directory at ./sample.pl line 13, <STDIN> line 1.
$

ちなみにJavaScriptの場合。

コード(BBEdit)





pythonの場合。

sample.py

コード(BBEdit)

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

import glob, os, re

dirname = input("ディレクトリ名を入力: ")
try:
    if re.match(r"^\s*$", dirname):
        os.chdir(os.environ['HOME'])
    else:
        os.chdir(dirname)
    for file in glob.glob('.*') + glob.glob('*'):
        print(file)
except FileNotFoundError as err:
    print("FileNotFoundError発生!")
    print(err)

except Exception as err:
    print("未知の例外発生!")
    print(err)

入出力結果(Terminal)

kamimura$ ./sample.py
ディレクトリ名を入力: 
.appcfg_nag
.bash_history
.bash_profile
.bash_profile.macports-saved_2011-12-06_at_18:40:28
.bash_profile.pysave
.cache
.calibre_calibre GUI.lock
.CFUserTextEncoding
.config
.cpan
.cpanplus
.cups
.dropbox
.DS_Store
.dvdcss
.emacs.d
.emacs.el
.emacs.el~
.exrc
.fontconfig
.fonts
.fonts.cache-1
.gdb_history
.gem
.ghc
.gnupg
.idlerc
.inputrc
.irb_history
.KeyHoleTV
.lesshst
.local
.macports
.MakeMKV
.mono
.mysql_history
.pearrc
.pyhistory
.pystartup
.recently-used
.recently-used.xbel
.rnd
.serverauth.87078
.sh_history
.subversion
.swl
.swm
.swn
.swo
.swp
.Trash
.viminfo
.vimrc
.wing101-4
.Xauthority
.Xcode
.Xmodmap
Calibre Library
Desktop
Documents
Downloads
Dropbox
KindleGen
Library
Movies
Music
nltk
nltk_data
pear
Pictures
Projects
Public
Sites
$ ./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 コメント:

コメントを投稿