Perl
sleepで、指定の秒数休止する。sleep - Perldoc Browser sleep関数 - 指定した時間スリープする - Perlゼミ|Perlの基礎をインストールからサンプルで丁寧に解説sleep.plに、と書く。 1秒ごとに配列要素を1つ取り出す。 これだとわからないけど、実際には1秒…
POSTで送られたデータのContent-typeが、'application/x-www-form-urlencoded'や'multipart/form-data'でない時に限り、CGI::paramに'POSTDATA'という文字列を指定することで、リクエストボディ丸ごと取得できる。CGI - Common Gateway Interface のリクエス…
binmodeは、C言語で扱ったsetmodeと同じで、指定のファイルハンドルをバイナリモードにする。Perlの組み込み関数 binmode の翻訳 - perldoc.jpまた、Windows上のApacheで試すのだが、今回はPerlのCGIなので、Perlを入れないといけない。Windows版ApacheでCGI…
下の記事にもある通り、CGI::paramでファイル(名?ハンドル?)を取得する方法は古い方法で、安全性に問題があったみたい。CGI - Common Gateway Interface のリクエストとレスポンスを扱う - perldoc.jp https://pointoht.ti-da.net/e6805798.htmlそんなわけ…
CGIのアップロード周りに戻ってきた。CGI - Common Gateway Interface のリクエストとレスポンスを扱う - perldoc.jp https://pointoht.ti-da.net/e6805798.htmlマルチパートのファイルアップロードの場合、標準入力STDINからreadで全部読み込むと、マルチパ…
ファイルハンドル、現代的な方法。 Perl 5.6からは、openの第1引数にundefな変数が渡されると無名型グロブへのリファレンスを返す。https://pointoht.ti-da.net/e5689400.html ファイルハンドルの概念を理解する - Perlゼミ - Perl元気塾のPerl講座open.plで…
ファイルハンドル、5つ目の方法。 IO::Fileは、IO::Handleを継承してるので、ファイルハンドルを生成できる。https://pointoht.ti-da.net/e8904484.html ファイルハンドルの概念を理解する - Perlゼミ - Perl元気塾のPerl講座IO__File.plで、と書く。 $ vi I…
ファイルハンドル、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にファイルハンドルを渡すことでファイルに出力できる。 その後ろにはリストを指定するのだが、文字列も1つのリスト見なせるので、今回も1つの文字列だけ出力。Perlの組み込み関数 print の翻訳 - perldoc.jpprint.plで、 #!/usr/bin/perl use strict; …
CGI::filefieldに-nameで名前を渡してみる。https://pointoht.ti-da.net/e6805798.htmlaction.cgiで、とすると、 test1.txtを選択して送信でtest1.txtを選択して送信で、 今度はマルチパートでファイルが送られてるみたい・・・。今度はマルチパートでファイ…
inputタグのtype=fileは、CGI::filefieldで出せる。https://pointoht.ti-da.net/e6805798.htmlaction.cgiで、とする。 今回はfilefieldに何も指定しない。 そして、ファイルアップロードはマルチパートなので、start_formでも何も指定しない。 perlコマンド…
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で初期値をセットする。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で初期値をセットする。https://pointoht.ti-da.net/e6782591.htmlform.cgiで、 -valueで'value1'をセット。 perlコマンドで、 $ perl form.cgi Content-Type: text/html; charset=ISO-8859-1
HTMLでは、inputタグのtype=textでテキストフィールド(エディットボックス)を出していた。 PerlのCGIモジュールでは、CGI::textfieldを使う。https://pointoht.ti-da.net/e6782591.htmlform.cgiで、name必須って言うけど、無くてもエラーにはならない模様。 …
マルチパートの場合は、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
毎回、enctypeに'application/x-www-form-urlencoded'と打つのも大変なので、大抵は指定する時にCGI::URL_ENCODEDという定数を使う。https://pointoht.ti-da.net/e6734582.html(正確にはサブルーチンなのか・・・。) action.cgiを、こうする。 perlコマンド…
start_formに-actionと-enctypeを指定した場合は、CGIが分かれるのでまだ楽。CGI - Common Gateway Interface のリクエストとレスポンスを扱う - perldoc.jpform.cgiが、で、action.cgiが、となる。 submitするとsubmitすると、 こうなるこうなる。Sample/pe…
start_formに-enctypeだけ指定した場合をやる。 POSTのlocalhostのapplication/x-www-form-urlencoded。CGI - Common Gateway Interface のリクエストとレスポンスを扱う - perldoc.jpちょっとこれは工夫が要る。 action.cgiを、こうする。 CGI::paramはPOST…
$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>
Content-lengthは、$ENV{'CONTENT_LENGTH'}で取得できる。フォームからの入力を受け取る処理の詳細解説 - Web Libertyform.htmlで、POSTにして、 ENV.cgiで、$ENV{'CONTENT_LENGTH'}を出力。 これでsubmitするとこれでsubmitすると、 Content-lengthは23Cont…
ファイルを一気に読み込む時は、readを使う。Perlの組み込み関数 read の翻訳 - perldoc.jp read関数 - ファイルからバイト数を指定して読み込み - Perlゼミ - Perl元気塾のPerl講座read.plで、こう書く。 $ vi test.txt $ cat test.txt ABCDE FGHIJ KLMNO $…
ファイルテスト演算子の-sは、ファイルサイズを取得する時に使う。Perl File Test Operators ファイルサイズを取得する - Perlゼミ - Perl元気塾のPerl講座file_test_operators.plで、として、 $ vi file_test_operators.pl $ vi test.txt $ cat test.txt AB…
ファイルに関する情報を取得する場合は、ファイルテスト演算子を使う。Perl File Test Operators ファイルの存在を確認する - Perlゼミ - Perl元気塾のPerl講座 -e <ファイル名> で、指定したファイルが存在するかをチェックする。ifの条件式に置いて、存在…
前回のstart_formの引数に、さらに-actionも指定してみる。https://pointoht.ti-da.net/e6730590.htmlつまり、今回はCGIを分ける。 form.cgiは、action.cgiは、とすると、 こっからsubmitでこっからsubmitで、 こうなるこうなる。Sample/perl/CGI/start_form…
今回は、-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"ファイルを指定する。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で、サブルーチンの中で、デフォルト値の決まったハッシュを作っておいて、実際に引数として渡されたハッシュと突…