2019年8月27日火曜日

開発環境

初めてのPerl 第7版 (Randal L. Schwartz(著)brian d foy(著)Tom Phoenix(著)近藤 嘉雪(翻訳)嶋田 健志(翻訳)オライリージャパン)の13章(ディレクトリ操作)、13.4(練習問題)3の解答を求めてみる。

コード

#!/usr/bin/env perl
use strict;
use warnings;
use utf8;
use v5.18;
use Cwd;

say '3.';

while (1) {
    print "ディレクトリ名を入力: ";
    chomp(my $dir = <STDIN>);
    last if $dir eq 'q';

    $dir = $ENV{HOME} if $dir =~/^\s*$/;

    say 'The current working directory is ', getcwd();
    opendir my $dh, $dir or die "Cannot open $dir: $!";
    
    for (sort readdir $dh) {
        say $_;
}
}

入出力結果(Bash、cmd.exe(コマンドプロンプト)、Terminal)

$ ./sample3.pl
3.
Wide character in print at ./sample3.pl line 11.
ディレクトリ名を入力: 
The current working directory is /Users/{username}/.../perl/初めてのPerl/ch13
.
..
.CFUserTextEncoding
.DS_Store
...
.vscode
Applications
Desktop
Documents
Downloads
Dropbox
IdeaProjects
Library
Movies
Music
...
Wide character in print at ./sample3.pl line 11, <STDIN> line 1.
ディレクトリ名を入力: tmp
The current working directory is /Users/{username}/.../perl/初めてのPerl/ch13
.
..
a.txt
z.txt
Wide character in print at ./sample3.pl line 11, <STDIN> line 2.
ディレクトリ名を入力: ..
The current working directory is /Users/{username}/.../perl/初めてのPerl/ch13
.
..
ch1
ch10
ch11
ch12
ch13
ch2
ch3
ch4
ch5
ch6
ch7
ch8
ch9
Wide character in print at ./sample3.pl line 11, <STDIN> line 3.
ディレクトリ名を入力: .
The current working directory is /Users/{username}/.../perl/初めてのPerl/ch13
.
..
output.txt
sample1.pl
sample2.pl
sample3.pl
sample3.pl~
tmp
tmp.txt
Wide character in print at ./sample3.pl line 11, <STDIN> line 4.
ディレクトリ名を入力: /opt
The current working directory is /Users/{username}/.../perl/初めてのPerl/ch13
.
..
local
Wide character in print at ./sample3.pl line 11, <STDIN> line 5.
ディレクトリ名を入力: /opt/local
The current working directory is /Users/{username}/.../perl/初めてのPerl/ch13
.
..
Library
bin
etc
include
lib
libexec
man
sbin
share
var
www
Wide character in print at ./sample3.pl line 11, <STDIN> line 6.
ディレクトリ名を入力: abcde
The current working directory is /Users/{username}/.../perl/初めてのPerl/ch13
Cannot open abcde: No such file or directory at ./sample3.pl line 18, <STDIN> line 7.
$ ./sample3.pl
3.
Wide character in print at ./sample3.pl line 11.
ディレクトリ名を入力: q
$ 

0 コメント:

コメントを投稿