Perl

sleep

sleepで、指定の秒数休止する。sleep - Perldoc Browser sleep関数 - 指定した時間スリープする - Perlゼミ|Perlの基礎をインストールからサンプルで丁寧に解説sleep.plに、と書く。 1秒ごとに配列要素を1つ取り出す。 これだとわからないけど、実際には1秒…

CGI::param('POSTDATA')

POSTで送られたデータのContent-typeが、'application/x-www-form-urlencoded'や'multipart/form-data'でない時に限り、CGI::paramに'POSTDATA'という文字列を指定することで、リクエストボディ丸ごと取得できる。CGI - Common Gateway Interface のリクエス…

binmode

binmodeは、C言語で扱ったsetmodeと同じで、指定のファイルハンドルをバイナリモードにする。Perlの組み込み関数 binmode の翻訳 - perldoc.jpまた、Windows上のApacheで試すのだが、今回はPerlのCGIなので、Perlを入れないといけない。Windows版ApacheでCGI…

CGI::upload(uploadedfile)

下の記事にもある通り、CGI::paramでファイル(名?ハンドル?)を取得する方法は古い方法で、安全性に問題があったみたい。CGI - Common Gateway Interface のリクエストとレスポンスを扱う - perldoc.jp https://pointoht.ti-da.net/e6805798.htmlそんなわけ…

CGI::param(uploadedfile)

CGIのアップロード周りに戻ってきた。CGI - Common Gateway Interface のリクエストとレスポンスを扱う - perldoc.jp https://pointoht.ti-da.net/e6805798.htmlマルチパートのファイルアップロードの場合、標準入力STDINからreadで全部読み込むと、マルチパ…

open(my $fh,mode,expr)

ファイルハンドル、現代的な方法。 Perl 5.6からは、openの第1引数にundefな変数が渡されると無名型グロブへのリファレンスを返す。https://pointoht.ti-da.net/e5689400.html ファイルハンドルの概念を理解する - Perlゼミ - Perl元気塾のPerl講座open.plで…

IO::File

ファイルハンドル、5つ目の方法。 IO::Fileは、IO::Handleを継承してるので、ファイルハンドルを生成できる。https://pointoht.ti-da.net/e8904484.html ファイルハンドルの概念を理解する - Perlゼミ - Perl元気塾のPerl講座IO__File.plで、と書く。 $ vi I…

IO::Handle

ファイルハンドル、4つ目の方法。 IO::Handleでもファイルハンドルを生成できる。https://pointoht.ti-da.net/e8883638.html ファイルハンドルの概念を理解する - Perlゼミ - Perl元気塾のPerl講座IO__Handle.plで、と書く。 $ vi IO__Handle.pl $ ls IO__Ha…

ファイルハンドル

ファイルハンドルの概念がわかりにくいので、ちょっと説明。ファイルハンドルの概念を理解する - Perlゼミ - Perl元気塾のPerl講座 ファイルハンドルと出力 - 2部 Perl言語仕様 - [SMART]上記の記事にもあるように、ファイルハンドルは具体的な実体があるわ…

print FILEHANDLE LIST

printにファイルハンドルを渡すことでファイルに出力できる。 その後ろにはリストを指定するのだが、文字列も1つのリスト見なせるので、今回も1つの文字列だけ出力。Perlの組み込み関数 print の翻訳 - perldoc.jpprint.plで、 #!/usr/bin/perl use strict; …

CGI::filefield(-name)

CGI::filefieldに-nameで名前を渡してみる。https://pointoht.ti-da.net/e6805798.htmlaction.cgiで、とすると、 test1.txtを選択して送信でtest1.txtを選択して送信で、 今度はマルチパートでファイルが送られてるみたい・・・。今度はマルチパートでファイ…

CGI::filefield

inputタグのtype=fileは、CGI::filefieldで出せる。https://pointoht.ti-da.net/e6805798.htmlaction.cgiで、とする。 今回はfilefieldに何も指定しない。 そして、ファイルアップロードはマルチパートなので、start_formでも何も指定しない。 perlコマンド…

CGI::submit

inputタグのtype=submitは、CGI::submitで出せる。https://pointoht.ti-da.net/e7005615.htmlaction.cgiで、とする。 perlコマンドだと、 $ perl action.cgi Content-Type: text/html; charset=ISO-8859-1

CGI::textfield(-name,-value)

CGI::textfieldで、-nameで名前、-valueで初期値をセットする。https://pointoht.ti-da.net/e6782591.htmlaction.cgiで、2つのinputタグをtextfieldにして、-nameと-valueをセット。 perlコマンドで、 $ perl action.cgi Content-Type: text/html; charset=I…

CGI::textfield(-value)

CGI::textfieldに-valueで初期値をセットする。https://pointoht.ti-da.net/e6782591.htmlform.cgiで、 -valueで'value1'をセット。 perlコマンドで、 $ perl form.cgi Content-Type: text/html; charset=ISO-8859-1

CGI::textfield

HTMLでは、inputタグのtype=textでテキストフィールド(エディットボックス)を出していた。 PerlのCGIモジュールでは、CGI::textfieldを使う。https://pointoht.ti-da.net/e6782591.htmlform.cgiで、name必須って言うけど、無くてもエラーにはならない模様。 …

CGI::MULTIPART

マルチパートの場合は、CGI::MULTIPART。https://pointoht.ti-da.net/e6734582.htmlaction.cgiは、perlコマンドだと、 $ vi action.cgi $ perl action.cgi Content-Type: text/html; charset=ISO-8859-1

CGI::URL_ENCODED

毎回、enctypeに'application/x-www-form-urlencoded'と打つのも大変なので、大抵は指定する時にCGI::URL_ENCODEDという定数を使う。https://pointoht.ti-da.net/e6734582.html(正確にはサブルーチンなのか・・・。) action.cgiを、こうする。 perlコマンド…

CGI::start_form(-action,-enctype)

start_formに-actionと-enctypeを指定した場合は、CGIが分かれるのでまだ楽。CGI - Common Gateway Interface のリクエストとレスポンスを扱う - perldoc.jpform.cgiが、で、action.cgiが、となる。 submitするとsubmitすると、 こうなるこうなる。Sample/pe…

CGI::start_form(-enctype)

start_formに-enctypeだけ指定した場合をやる。 POSTのlocalhostのapplication/x-www-form-urlencoded。CGI - Common Gateway Interface のリクエストとレスポンスを扱う - perldoc.jpちょっとこれは工夫が要る。 action.cgiを、こうする。 CGI::paramはPOST…

%ENV(REQUEST_METHOD)

$ENV{'REQUEST_METHOD'}で、リクエストのメソッドを取得できる。フォームからの入力を受け取る処理の詳細解説 - Web LibertyENV.cgiを、として、form.htmlを、 <html> <head> <title>ENV#ENV#REQUEST_METHOD</title> </head> <body> <script type="text/javascript"> <!-- // --> </script> <form method="GET" action="/cgi-bin/ENV.cgi"> </form></body></html>

%ENV(CONTENT_LENGTH)

Content-lengthは、$ENV{'CONTENT_LENGTH'}で取得できる。フォームからの入力を受け取る処理の詳細解説 - Web Libertyform.htmlで、POSTにして、 ENV.cgiで、$ENV{'CONTENT_LENGTH'}を出力。 これでsubmitするとこれでsubmitすると、 Content-lengthは23Cont…

read

ファイルを一気に読み込む時は、readを使う。Perlの組み込み関数 read の翻訳 - perldoc.jp read関数 - ファイルからバイト数を指定して読み込み - Perlゼミ - Perl元気塾のPerl講座read.plで、こう書く。 $ vi test.txt $ cat test.txt ABCDE FGHIJ KLMNO $…

ファイルテスト演算子(-s)

ファイルテスト演算子の-sは、ファイルサイズを取得する時に使う。Perl File Test Operators ファイルサイズを取得する - Perlゼミ - Perl元気塾のPerl講座file_test_operators.plで、として、 $ vi file_test_operators.pl $ vi test.txt $ cat test.txt AB…

ファイルテスト演算子(-e)

ファイルに関する情報を取得する場合は、ファイルテスト演算子を使う。Perl File Test Operators ファイルの存在を確認する - Perlゼミ - Perl元気塾のPerl講座 -e <ファイル名> で、指定したファイルが存在するかをチェックする。ifの条件式に置いて、存在…

CGI::start_form(-method,-action,-enctype)

前回のstart_formの引数に、さらに-actionも指定してみる。https://pointoht.ti-da.net/e6730590.htmlつまり、今回はCGIを分ける。 form.cgiは、action.cgiは、とすると、 こっからsubmitでこっからsubmitで、 こうなるこうなる。Sample/perl/CGI/start_form…

CGI::start_form(-method,-enctype)

今回は、-methodで'get'、-enctypeで'application/x-www-form-urlencoded'を指定して、GETで投げてみる。https://pointoht.ti-da.net/e6730590.htmlPOSTの時のみenctypeが有効ってあるが、GETでも'application/x-www-form-urlencoded'は有効でしょ。こうする…

CGI::start_form(-action)

CGI::start_formは、ハッシュ形式で引数を指定できる。 今回は-actionで別の".cgi"ファイルを指定する。https://pointoht.ti-da.net/e6730590.html今回は、まずはform.cgiを用意して、start_formで、キーは-action、値は'action.cgi'とする。 そして、action…

名前付き引数

デフォルト引数として値が設定されているサブルーチンで、特定の値を上書きしたい場合、ハッシュ形式でキーと値を指定するのだが、これは事実上名前付き引数でもある。Perl Tips:名前付き引数とデフォルト値sub.plで、今回は、-value1を'XXX'、-value3を'ZZZ…

デフォルト引数

サブルーチンの引数をハッシュで受け取る方法を応用すると、デフォルト引数を作ることが出来る。Perl Tips:名前付き引数とデフォルト値sub.plで、サブルーチンの中で、デフォルト値の決まったハッシュを作っておいて、実際に引数として渡されたハッシュと突…