読者です 読者をやめる 読者になる 読者になる

perl

perl CGI

以下のHTMLファイルは/cgi-binディレクトリにあるCGIプログラムquestionnaire.cgiを呼び出す <html> <head> <title>アンケートの例</title> </head> <body> <h1>アンケートの例</h1> <p>次の質問にお応えください</p> <form action="cgi-bin/questionnaire.cgi" method="post"> <dl> …</dl></form></body></html>

perl 簡単なWebブラウザ

#簡単なWebブラウザ #browser.pl #モジュールの使用宣言 use IO::Socket; #URLを入力 print "URLを指定してください>"; $url = <STDIN>; #URLをホスト名とファイルパスに分割 chomp($url); if($url =~ /http:\/\/([^\/]+)(\/.*)/){ $host = $1; $file = $2; }else{</stdin>…

perl ソケット

サーバースクリプト #クライアントからの文字入力を受けてそれをそのまま返すサーバースクリプト #echoserver.pl #モジュールの使用宣言 use IO::Socket; #ソケットオブジェクト作成 $server_socket = new IO::Socket::INET( LocalPort => '10000', Proto =>…

perl fork関数

#forkを使って2つの処理を作る #fork関数を使って処理を分岐し、親プロセスと子プロセスでそれぞれ異なる文字列表示を実行する #fork.pl if($pid = fork()){ #親プロセス for($i = 1; $i <= 3; $i++){ print "親プロセス\n"; sleep(3); } waitpid($pid, 0); …

perl 外部プログラムの実行 exec

#excec関数による実行 #exec.pl #lsを実行 exec("ls"); print "エラーが発生しました:$!\n"; 初めてのPerl 第6版作者: Randal L. Schwartz,brian d foy,Tom Phoenix,近藤嘉雪出版社/メーカー: オライリージャパン発売日: 2012/07/25メディア: 大型本購入: 7…

perl 外部プログラムの実行

#system関数を使ってunixのlsコマンドを実行する #shellに関数による実行 #shell.pl #lsを実行 system("ls"); 初めてのPerl 第6版作者: Randal L. Schwartz,brian d foy,Tom Phoenix,近藤嘉雪出版社/メーカー: オライリージャパン発売日: 2012/07/25メディア…

perl 現在のディレクトリのファイル一覧を表示する

#現在のディレクトリのファイル一覧を表示する #ディレクトリの内容を読み込み表示する #readdir.pl #現在のディレクトリ(.)をオープンする opendir(DIR, ".") || die ".をオープンできません:$!\n"; #配列に読み込む @files = readdir(DIR); #クローズする…

perl 指定したディレクトリを削除する

#指定したディレクトリを削除するスクリプト #rmdir.pl print "削除するディレクトリ名を指定してください>"; $directory = <STDIN>; chomp($directory); if(-d $directory){ #ディレクトリがすでにある #ディレクトリを削除 rmdir($directory) || die "$directory</stdin>…

perl ディレクトリの作成

#指定したディレクトリが存在するかどうか調べ、存在しない時は新しく作成する #指定したディレクトリを作成 #mkdir.pl print "作成するディレクトリ名を指定してください>"; $directory = <STDIN>; chomp($directory); if(!-d $directory){ #ディレクトリがまだな</stdin>…

perl ファイルの削除時にY/Nで確認する

#ファイル名を引数として受け取り、ファイルの有無を確認した後、 # 「<ファイル名>を削除しますか?(Y/N):」というメッセージを出して、Yが押された時のみファイルを削除するスクリプト #ファイルの削除時に確認する #remove_ask.pl $filename = $ARGV[0]…

perl 既存のファイルに権限を追加する

#指定した引数をファイル名として扱い、そのファイルの所有者がユーザ自信であり、読み込み権限を持っていれば、既存の権限に加えて所有者とグループの書込権限を付けるスクリプト #既存のファイルに権限を追加する #append_mod.pl if(@ARGV > 0){ if(-o $AR…

perl statでファイルの詳細な情報を表示する

#指定したファイルの詳細な情報を表示する #stat.pl print "ファイル名を指定してください>"; $file = <STDIN>; chomp($file); #statで情報を取得 ($device, $inode, $mode, $nlink, $userid, $groupid, $rdev, $size, $accesstime, $modifytime, $changetime, $blo</stdin>…

perl chmod関数で権限を変更する

#chmod関数を使って指定したファイルの読み込み、書込、実行権限をそれぞれ変更する #ファイル権限の変更 #chmod.pl print "ファイル名を指定してください>"; $file = <STDIN>; chomp($file); #初期状態を表示 print "初期状態:\n"; &fileinfo(); print "権限値を1</stdin>…

perl ファイルの情報を調べる

#引数をファイル名とみなして、各情報を調べる #ファイルのテスト #filetest.pl if(@ARGV > 0){ #最初の引数をファイル名とみなす print "$ARGV[0] は通常のファイルです\n" if(-e $ARGV[0]); print "$ARGV[0] はディレクトリです。\n" if(-d $ARGV[0]); pri…

perl 指定したファイルを削除する

#指定したファイルを削除する #unlink.pl $file = <STDIN>; chomp($file); unlink($file) || die "$fileを削除できません:$!\n"; #実行結果 # $ perl unlink.pl # testtesttesttxt 初めてのPerl 第6版作者: Randal L. Schwartz,brian d foy,Tom Phoenix,近藤嘉雪出</stdin>…

perl 指定したファイルを指定した名前に変更する

#指定したファイルを指定した名前に変更するスクリプト #ファイル名の変更 #rename.pl print "変更前のファイル名>"; $from_file = <STDIN>; print "変更後のファイル名>"; $to_file = <STDIN>; chomp($from_file, $to_file); #名前の変更 rename($from_file, $to_file) |</stdin></stdin>…

perl ENDを着くんだ文字列が入るまで標準エラー出力に表示する

#キーボードの入力を、キーワードENDを含んだ文字列が入るまで、そのまま標準エラー出力に表示するスクリプト while(1){ $string = <STDIN>; if($string =~ /END/){ exit; }else{ print STDERR $string; } } #実行結果 # abc # abc # def # def # ghi # ghi # END </stdin>…

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 …

perl 標準入力または引数に指定したファイルを表示する

#標準入力または引数に指定したファイルをそのまま表示する #標準入力とファイルの双方を受け取るスクリプト #which.pl #標準入力、ファイルのどちらかを取得 while(<>){ #内容を表示 print; } #perl which.plのように引数を指定しないで実行すると、標準入…

perl 出力先を標準出力と標準エラー出力に分ける 

#出力先を標準出力と標準エラー出力に分ける #標準出力と標準エラー出力の違い #std.pl #標準出力 print STDOUT "標準出力に出力しています。\n"; #標準エラー出力 print STDERR "標準エラー出力に出力しています。\n"; #実行結果 # $ perl std.pl # 標準出…

perl 標準入力STDIN

#標準入力からの入力を受け、それをそのまま表示する。(エコーバック)実行後、文字列を入力してEnterキーを押すと画面にその文字列を表示した後、また入力を待つ。QUITを含む文字列を入力するとスクリプトを終了する。 #入力をそのままエコーする #echo.pl…

perl ファイルのコピー

#コピー元のファイル名とコピー先のファイル名を入力するとファイルのコピーを行うスクリプト #ファイルの内容を別のファイル名のファイルにコピーする #copy2.pl print "コピー元のファイル名を指定してください>"; $from_file = <STDIN>; print "コピー先のファイ</stdin>…

perl 追加書き出し

#output.txtを追加書き出し用としてオープンし文字列を追加する #追加出力ファイルに文字列を書き出す # append.pl #追加出力ファイルとしてオープン open(F, ">>output.txt") || die "output.txtに追加できません。$!\n"; #文字列をファイルハンドルFに書き…

perl 文字列の書き出し

#output.txtを書き出し用としてオープンし、文字列を書き出す #出力ファイルに文字列を書き出す #write.pl #新規出力用としてオープン open(F, ">output.txt") || die "output.txtを作成できません:$!\n"; #文字列をファイルハンドルFに書き出し print F "こ…

perl ファイルのオープンとクローズ

オープンするためのファイルを作成しておく てすとてきすと テストテキスト test.txt ファイルをオープンして内容を表示するスクリプト #ファイルtest.txtを読み込み専用でオープンした後、その内容を画面に表示してからクローズする。 #ファイルをオープン…

perl utf8モジュール

#utf8モジュールを使って、UTF-8文字エンコーディングで日本語変数名を指定する。 #UTF-8の変数名を使う # utf8_consumption_duty.pl #モジュール呼び出し use utf8; $消費税率 = 0.08; print "subtotal: "; $小計金額 = <STDIN>; chomp($小計金額); $消費税額 = $</stdin>…

perl Benchmarkモジュール

#オブジェクト指向モジュールの一つBenchmarkを使ってベンチマークのテストを行う #ベンチマーク #benchmark.pl #モジュール呼び出し use Benchmark; #1つ目のベンチマークオブジェクト $before_time = new Benchmark; #500000カウントの計算 &recursive(500…

perl copyモジュール

#File::Copyを使ってファイルをコピー #copy.pl #モジュール呼び出し #File::Copyモジュールを呼び出す use File::Copy; #引数が二つ以上の時はusageサブルーチンを呼び出してコピー命令の使い方を表示する。 if(@ARGV != 2){ #引数が2つ以上の時には使い方…

perl パッケージ

helloという名前のパッケージを定義する #パッケージ化したhelloモジュール # hello_package.pm # helloという名前でパッケージを定義 package hello; #このサブルーチンはhello::helloとして呼び出す sub hello{ my($name) = @_; print "こんにちは、$name…

perl モジュール

#BEGINとENDのテスト #begin_end.pm #BEGINルーチン BEGIN{ print "モジュールを開始しました。\n"; } #ENDルーチン END{ print "モジュールを終了しました。\n"; } 1; モジュールを読み込むスクリプト #begin_endモジュールを読み込む #begin_end_call.pl p…

perl 設定ファイルを読み込む

設定ファイルをを作成する #設定ファイル #config $name = "太郎"; 1; この設定ファイルを読み込む #設定ファイルを読み込むスクリプト # config_load.pl #初期値 $name = "匿名"; #ファイルの存在チェック if(-r "config"){ require("config"); } print "こ…

perl ライブラリとモジュール

ライブラリファイルを作る #helloライブラリ #hello_lib.pl #サブルーチン定義 sub hello{ my($name) = @_; print "こんにちは、$nameさん。\n"; } #戻り値 #ライブラリなのでスクリプトの最後に1;をつける。 1; これをrequire関数を使って読み込む #hello_l…

perl ハッシュのリファレンス

#ハッシュのリファレンスを受け取り、キーと値を逆にして返すサブルーチン #サブルーチン実行前 %hash = ( "太郎"=>"tarou", "花子"=>"hanako", "次郎"=>"jirou", ); print "実行前:\n"; print "$key => $value\n" while(($key, $value) = each(%hash)); #…

perl 無名サブルーチン

#無名サブルーチンで戻り値を直接取得する #無名サブルーチン $string = sub{ #文字列を返す return("こんにちは、私は$nameです。\n"); }; #戻り値を表示 $name = "花子"; print "戻り値:", &$string; #実行結果 # 戻り値:こんにちは、私は花子です。 初…

perl 配列のリファレンス

#配列のリファレンス @array = (1 .. 5); #サブルーチン実行前 print "実行前:",join(", ", @array), "\n"; #リファレンスを渡してサブルーチン実行 &sub_reference_array(\@array); #サブルーチン実行後 print "実行後:",join(", ", @array), "\n"; #サブ…

perl リファレンス1

#スカラー変数をリファレンスで渡し、サブルーチンで内容を変更する $string = "私は太郎です。"; #サブルーチン実行前 print "実行前: $string\n"; #リファレンスを渡してサブルーチン実行 &sub_reference(\$string); #サブルーチン実行後: print "実行後…

perl リファレンス

#スカラー変数のリファレンス #\$variable #スカラー変数のリファレンスから内容を求める # $$reference # ${$reference} #配列のリファレンス # \@array #配列のリファレンスから内容を求める # @$referece # @{$reference} #配列の特定要素を求める # $$re…

perl local と my

#合計を調べる #初期値 $sum = 10; #サブルーチン1を呼び出し &sum1(); print "合計: $sum\n"; #サブルーチン1 sub sum1{ $sum++; { local($sum); $sum++; &sum2(); } &sum3(); } #サブルーチン2 sub sum2{ $sum++; } #サブルーチン3 sub sum3{ my($sum); $s…

perl my とour

#ourとmyのテスト #グローバル変数を宣言 @global_value = (1, 2, 3); &modify_my(); print "[my後] ", @global_value, "\n"; &modify_our(); print "[our後] ", @global_value, "\n"; #myによるグローバル変数の上書き sub modify_my{ my(@global_value); p…

perl ブロック内でのローカル変数

#ブロック内でのローカル変数の定義 $variable = "グローバル"; print "サブルーチン実行前: $variable\n"; #サブルーチン呼び出し &block(); print "サブルーチン実行後: $variable\n"; #サブルーチン本体 sub block{ my($variable) = "ローカル"; print "\…

perl localとmyの違い2

#localで定義した変数が別のサブルーチンで変更できることを確認する &modify_local(); #サブルーチン本体 sub modify_local{ #ローカルで定義 local($local_value) = "元のテキスト"; #ローカルで定義 my($my_value) = "元のテキスト"; print "[実行前]\n";…

perl localとmyの違い

#localとmyのテスト #localで宣言した変数の値は別のサブルーチンから参照できるが、myで宣言下変数の値は参照できない #サブルーチン呼び出し &local_my(); #サブルーチン本体 sub local_my{ #localによる定義 local($local_value) = "太郎"; #myによる定義…

perl ハノイの塔

#ハノイの塔 #サブルーチン呼び出し &hanoi(3, "左", "中", "右"); #サブルーチン本体 sub hanoi{ my ($disk, $bar1, $bar2, $bar3) = @_; #円盤が1つ以上残っている if($disk > 0){ #再帰呼び出し1 hanoi($disk - 1, $bar1, $bar3, $bar2); #移動内容を表示…

perl 戻り値を持つサブルーチンの呼び出し

#戻り値を持つhello_retサブルーチンの呼び出し #サブルーチン呼び出し $string = &hello_ret("花子"); #戻り値を表示 print "戻り値: $string"; #サブルーチンの定義 sub hello_ret{ my($name) = @_; #文字列を返す "こんにちは、私は$nameです。\n"; } #…

perl 引数をひとつ取るサブルーチン

#引数を取るサブルーチンの呼び出し #サブルーチン呼び出し &hello_arg("太郎"); #サブルーチンの定義 #サブルーチンの引数はリスト@_に入る。myを使ってローカル変数として定義する。 sub hello_arg{ my($name) = @_; print "こんにちは、私は$nameです。\n…

perl サブルーチン1

#helloサブルーチンの呼び出し #サブルーチンの呼び出し &hello(); #サブルーチンの定義 sub hello{ print "こんにちは、サブルーチンです。\n"; } #実行結果 # こんにちは、サブルーチンです。 初めてのPerl 第6版作者: Randal L. Schwartz,brian d foy,Tom…

perl 関数 packとunpack

#入力した文字列と数値をパックして表示した後、元の文字列に戻して再表示する。 #packとunpackのテスト #pack("format", list) #unpack("format", variable) print "文字列を入力してください>"; $string = <STDIN>; chomp($string); $length = length($string); </stdin>…

perl 関数 sort

#スペース文字で区切った数値リストを整列する print "要素をスペース文字で区切った数値のリストを入力してください>"; $numbers = <STDIN>; chomp($numbers); #ソートして表示 print join(", ", sort{$a <=> $b} (split(/\s+/, $numbers))),"\n"; #実行結果 # 要</stdin>…

perl 文字列処理関数 length

#lengthのテスト print "文字列を入力してください>"; $string = <STDIN>; chomp($string); #長さを調べる print "文字列の長さ:", length($string), "\n"; #実行結果 # 文字列を入力してください>perl is a practical extraction and report language # 文字列</stdin>…

perl 文字列処理関数 chopとchomp

#chopとchompの比較 $string1 = "perl\n"; $string2 = $string1; #chopとchompをそれぞれ2回実行する chop($string1); chop($string1); chomp($string2); chomp($string2); #表示 print "chop: $string1\n"; print "chomp: $string2\n"; #実行結果 # chop: …