perl 現在のディレクトリのファイル一覧を表示する
#現在のディレクトリのファイル一覧を表示する #ディレクトリの内容を読み込み表示する #readdir.pl #現在のディレクトリ(.)をオープンする opendir(DIR, ".") || die ".をオープンできません:$!\n"; #配列に読み込む @files = readdir(DIR); #クローズする closedir(DIR); #表示 foreach(@files){ print "$_\n"; } #実行結果 # $ ls # readdir.pl test1.txt test2.txt test3.txt # $ perl readdir.pl # . # .. # readdir.pl # test1.txt # test2.txt # test3.txt
- 作者: Randal L. Schwartz,brian d foy,Tom Phoenix,近藤嘉雪
- 出版社/メーカー: オライリージャパン
- 発売日: 2012/07/25
- メディア: 大型本
- 購入: 7人 クリック: 22回
- この商品を含むブログ (17件) を見る
perl 指定したディレクトリを削除する
#指定したディレクトリを削除するスクリプト #rmdir.pl print "削除するディレクトリ名を指定してください>"; $directory = <STDIN>; chomp($directory); if(-d $directory){ #ディレクトリがすでにある #ディレクトリを削除 rmdir($directory) || die "$directoryを削除出来ません。:$!\n"; }else{ #ディレクトリがないかディレクトリではない print "$directoryは存在しません。またはディレクトリではありません。\n"; } #実行結果 # $ perl rmdir.pl # 削除するディレクトリ名を指定してください>newDirectory # $ perl rmdir.pl # 削除するディレクトリ名を指定してください>newDirectory # newDirectoryは存在しません。またはディレクトリではありません。
- 作者: Randal L. Schwartz,brian d foy,Tom Phoenix,近藤嘉雪
- 出版社/メーカー: オライリージャパン
- 発売日: 2012/07/25
- メディア: 大型本
- 購入: 7人 クリック: 22回
- この商品を含むブログ (17件) を見る
perl ディレクトリの作成
#指定したディレクトリが存在するかどうか調べ、存在しない時は新しく作成する #指定したディレクトリを作成 #mkdir.pl print "作成するディレクトリ名を指定してください>"; $directory = <STDIN>; chomp($directory); if(!-d $directory){ #ディレクトリがまだない #ディレクトリを作成 mkdir($directory, 0755) || die "$directoryを作成できません:$!\n"; }else{ #既に存在 print "$directoryは既に存在します。\n"; } #実行結果 # $ perl mkdir.pl # 作成するディレクトリ名を指定してください>newDirectory # $ perl mkdir.pl # 作成するディレクトリ名を指定してください>newDirectory # newDirectoryは既に存在します。
- 作者: Randal L. Schwartz,brian d foy,Tom Phoenix,近藤嘉雪
- 出版社/メーカー: オライリージャパン
- 発売日: 2012/07/25
- メディア: 大型本
- 購入: 7人 クリック: 22回
- この商品を含むブログ (17件) を見る
perl ファイルの削除時にY/Nで確認する
#ファイル名を引数として受け取り、ファイルの有無を確認した後、 # 「<ファイル名>を削除しますか?(Y/N):」というメッセージを出して、Yが押された時のみファイルを削除するスクリプト #ファイルの削除時に確認する #remove_ask.pl $filename = $ARGV[0]; if(-f $filename){ while(){ print "$filenameを削除しますか?(Y/N):"; $answer = <STDIN>; chomp($answer); if($answer eq 'Y'){ unlink($filename) or die "$filenameは削除できませんでした:$!\n"; last; }elsif($answer eq 'N'){ last; }else{ print "無効な値が入力されました。\n"; } } }else{ print "$filenameは存在しません。\n"; } #実行結果 # $ perl remove_ask.pl output.txt # output.txtを削除しますか?(Y/N):y # 無効な値が入力されました。 # output.txtを削除しますか?(Y/N):n # 無効な値が入力されました。 # output.txtを削除しますか?(Y/N):Y
- 作者: Randal L. Schwartz,brian d foy,Tom Phoenix,近藤嘉雪
- 出版社/メーカー: オライリージャパン
- 発売日: 2012/07/25
- メディア: 大型本
- 購入: 7人 クリック: 22回
- この商品を含むブログ (17件) を見る
perl 既存のファイルに権限を追加する
#指定した引数をファイル名として扱い、そのファイルの所有者がユーザ自信であり、読み込み権限を持っていれば、既存の権限に加えて所有者とグループの書込権限を付けるスクリプト #既存のファイルに権限を追加する #append_mod.pl if(@ARGV > 0){ if(-o $ARGV[0]){ #所有者のファイルかどうか調べる #ファイル情報を取得 ($device, $inode, $mode, $nlink, $userid, $groupid, $rdev, $size, $accesstime, $modifytime, $changetime, $blocksize, $blockcount) = stat($ARGV[0]); #権限を追加 chmod($mode | 0220, $ARGV[0]); }else{ print "所有のファイルではありません\n"; } }else{ print "ファイル名を指定してください\n"; }
- 作者: Randal L. Schwartz,brian d foy,Tom Phoenix,近藤嘉雪
- 出版社/メーカー: オライリージャパン
- 発売日: 2012/07/25
- メディア: 大型本
- 購入: 7人 クリック: 22回
- この商品を含むブログ (17件) を見る
perl statでファイルの詳細な情報を表示する
#指定したファイルの詳細な情報を表示する #stat.pl print "ファイル名を指定してください>"; $file = <STDIN>; chomp($file); #statで情報を取得 ($device, $inode, $mode, $nlink, $userid, $groupid, $rdev, $size, $accesstime, $modifytime, $changetime, $blocksize, $blockcount) = stat($file); #各情報を表示 printf("デバイス:%d\n". "i-node: %d\n". "権限値: %o\n". "リンク:%d\n". "ユーザID: %d\n". "グループID:%d\n". "デバイス識別子:%d\n". "サイズ:%d\n". "アクセス時間:%d\n". "更新時間:%d\n". "i-node変更時間:%d\n". "ブロックサイズ:%d\n". "ブロック数:%d\n", $device, $inode, $mode, $nlink, $userid, $groupid, $rdev, $size, $accesstime, $modifytime, $changetime, $blocksize, $blockcount ); #実行結果 # デバイス:16777222 # i-node: 820392 # 権限値: 100700 # リンク:1 # ユーザID: 501 # グループID:20 # デバイス識別子:0 # サイズ:0 # アクセス時間:1467785883 # 更新時間:1467736439 # i-node変更時間:1467787740 # ブロックサイズ:4096 # ブロック数:0
- 作者: Randal L. Schwartz,brian d foy,Tom Phoenix,近藤嘉雪
- 出版社/メーカー: オライリージャパン
- 発売日: 2012/07/25
- メディア: 大型本
- 購入: 7人 クリック: 22回
- この商品を含むブログ (17件) を見る
perl chmod関数で権限を変更する
#chmod関数を使って指定したファイルの読み込み、書込、実行権限をそれぞれ変更する #ファイル権限の変更 #chmod.pl print "ファイル名を指定してください>"; $file = <STDIN>; chomp($file); #初期状態を表示 print "初期状態:\n"; &fileinfo(); print "権限値を100にします\n"; chmod(0100, $file); &fileinfo(); print "権限値を200にします。\n"; chmod(0200, $file); &fileinfo(); print "権限値を400にします。\n"; chmod(0400, $file); &fileinfo(); print "権限値を600にします。\n"; chmod(0600, $file); &fileinfo(); print "権限値を700にします。\n"; chmod(0700, $file); &fileinfo(); sub fileinfo{ #ファイルの情報を表示 print "\t$fileは読み込めます\n" if (-r $file); print "\t$fileは書き込めます\n" if (-w $file); print "\t$fileは実行できます\n" if (-x $file); } #実行結果 # ファイル名を指定してください>output.txt # 初期状態: # output.txtは読み込めます # output.txtは書き込めます # 権限値を100にします # output.txtは実行できます # 権限値を200にします。 # output.txtは書き込めます # 権限値を400にします。 # output.txtは読み込めます # 権限値を600にします。 # output.txtは読み込めます # output.txtは書き込めます # 権限値を700にします。 # output.txtは読み込めます # output.txtは書き込めます # output.txtは実行できます
- 作者: Randal L. Schwartz,brian d foy,Tom Phoenix,近藤嘉雪
- 出版社/メーカー: オライリージャパン
- 発売日: 2012/07/25
- メディア: 大型本
- 購入: 7人 クリック: 22回
- この商品を含むブログ (17件) を見る
perl ファイルの情報を調べる
#引数をファイル名とみなして、各情報を調べる #ファイルのテスト #filetest.pl if(@ARGV > 0){ #最初の引数をファイル名とみなす print "$ARGV[0] は通常のファイルです\n" if(-e $ARGV[0]); print "$ARGV[0] はディレクトリです。\n" if(-d $ARGV[0]); print "$ARGV[0] はシンボリックリンクです\n" if(-l $ARGV[0]); print "$ARGV[0] はあなたが所有者です。\n" if(-o $ARGV[0]); print "$ARGV[0] は名前付きパイプです\n" if(-p $ARGV[0]); print "$ARGV[0] は読み込めます。\n" if(-r $ARGV[0]); print "$ARGV[0] は書き込めます。\n" if(-w $ARGV[0]); print "$ARGV[0] は実行できます。\n" if(-x $ARGV[0]); print "$ARGV[0] はバイナリファイルです。\n" if(-B $ARGV[0]); print "$ARGV[0] はテキストファイルです。\n" if(-T $ARGV[0]); print "$ARGV[0] はソケットファイルです。\n" if(-S $ARGV[0]); }else{ print "ファイル名を指定してください\n"; } #実行結果 # $ perl filetest.pl output.txt # output.txt は通常のファイルです # output.txt はあなたが所有者です。 # output.txt は読み込めます。 # output.txt は書き込めます。 # output.txt はバイナリファイルです。 # output.txt はテキストファイルです。
- 作者: Randal L. Schwartz,brian d foy,Tom Phoenix,近藤嘉雪
- 出版社/メーカー: オライリージャパン
- 発売日: 2012/07/25
- メディア: 大型本
- 購入: 7人 クリック: 22回
- この商品を含むブログ (17件) を見る
perl 指定したファイルを削除する
#指定したファイルを削除する #unlink.pl $file = <STDIN>; chomp($file); unlink($file) || die "$fileを削除できません:$!\n"; #実行結果 # $ perl unlink.pl # testtesttesttxt
- 作者: Randal L. Schwartz,brian d foy,Tom Phoenix,近藤嘉雪
- 出版社/メーカー: オライリージャパン
- 発売日: 2012/07/25
- メディア: 大型本
- 購入: 7人 クリック: 22回
- この商品を含むブログ (17件) を見る
perl 指定したファイルを指定した名前に変更する
#指定したファイルを指定した名前に変更するスクリプト #ファイル名の変更 #rename.pl print "変更前のファイル名>"; $from_file = <STDIN>; print "変更後のファイル名>"; $to_file = <STDIN>; chomp($from_file, $to_file); #名前の変更 rename($from_file, $to_file) || die "$from_file から $to_file に名前変更出来ません。:$!\n"; #実行結果 # 変更前のファイル名>test.txt # 変更後のファイル名>testtesttesttxt
- 作者: Randal L. Schwartz,brian d foy,Tom Phoenix,近藤嘉雪
- 出版社/メーカー: オライリージャパン
- 発売日: 2012/07/25
- メディア: 大型本
- 購入: 7人 クリック: 22回
- この商品を含むブログ (17件) を見る
perl ENDを着くんだ文字列が入るまで標準エラー出力に表示する
#キーボードの入力を、キーワードENDを含んだ文字列が入るまで、そのまま標準エラー出力に表示するスクリプト while(1){ $string = <STDIN>; if($string =~ /END/){ exit; }else{ print STDERR $string; } } #実行結果 # abc # abc # def # def # ghi # ghi # END
- 作者: Randal L. Schwartz,brian d foy,Tom Phoenix,近藤嘉雪
- 出版社/メーカー: オライリージャパン
- 発売日: 2012/07/25
- メディア: 大型本
- 購入: 7人 クリック: 22回
- この商品を含むブログ (17件) を見る
perl ARGV
#引数の数と内容を表示する。 #引数の数を表示 print "ARGVの数:".@ARGV."\n"; #各引数の内容を表示 for($number = 0; $number< @ARGV; $number++){ print "引数$number: $ARGV[$number]\n"; } #実行結果 # $ perl argv.pl # ARGVの数:0 # $ perl argv.pl practical extraction and report language # ARGVの数:5 # 引数0: practical # 引数1: extraction # 引数2: and # 引数3: report # 引数4: language
- 作者: Randal L. Schwartz,brian d foy,Tom Phoenix,近藤嘉雪
- 出版社/メーカー: オライリージャパン
- 発売日: 2012/07/25
- メディア: 大型本
- 購入: 7人 クリック: 22回
- この商品を含むブログ (17件) を見る
perl 標準入力または引数に指定したファイルを表示する
#標準入力または引数に指定したファイルをそのまま表示する #標準入力とファイルの双方を受け取るスクリプト #which.pl #標準入力、ファイルのどちらかを取得 while(<>){ #内容を表示 print; } #perl which.plのように引数を指定しないで実行すると、標準入力を受け取る #待機状態になる。文字列を入力してenterキーを押すとその文字列がエコーバッ #クされ待機状態に戻る。perl which.pl test.txtのようにwhich.plに引数を #指定すると、引数をファイル名とみなしてオープンし、その内容を入力とし #て受け取り、画面に出力する。 #実行結果 # $ perl which.pl # hello # hello # hello # hello # how # how # low # low # ^C # $ perl which.pl copyFile.txt # これをこぴー
- 作者: Randal L. Schwartz,brian d foy,Tom Phoenix,近藤嘉雪
- 出版社/メーカー: オライリージャパン
- 発売日: 2012/07/25
- メディア: 大型本
- 購入: 7人 クリック: 22回
- この商品を含むブログ (17件) を見る
perl 出力先を標準出力と標準エラー出力に分ける
#出力先を標準出力と標準エラー出力に分ける #標準出力と標準エラー出力の違い #std.pl #標準出力 print STDOUT "標準出力に出力しています。\n"; #標準エラー出力 print STDERR "標準エラー出力に出力しています。\n"; #実行結果 # $ perl std.pl # 標準出力に出力しています。 # 標準エラー出力に出力しています。 # #$ perl std.pl > stdout.txt # 標準エラー出力に出力しています。 # #$ cat stdout.txt # 標準出力に出力しています。
- 作者: Randal L. Schwartz,brian d foy,Tom Phoenix,近藤嘉雪
- 出版社/メーカー: オライリージャパン
- 発売日: 2012/07/25
- メディア: 大型本
- 購入: 7人 クリック: 22回
- この商品を含むブログ (17件) を見る
perl 標準入力STDIN
#標準入力からの入力を受け、それをそのまま表示する。(エコーバック)実行後、文字列を入力してEnterキーを押すと画面にその文字列を表示した後、また入力を待つ。QUITを含む文字列を入力するとスクリプトを終了する。 #入力をそのままエコーする #echo.pl do{ #標準入力から取り込む $string = <STDIN>; #表示する print $string; #QUITを含む文字列が入ると終了する }until ($string =~ /QUIT/); #実行結果 # hello # hello # world # world # QUIT # QUIT
- 作者: Randal L. Schwartz,brian d foy,Tom Phoenix,近藤嘉雪
- 出版社/メーカー: オライリージャパン
- 発売日: 2012/07/25
- メディア: 大型本
- 購入: 7人 クリック: 22回
- この商品を含むブログ (17件) を見る