Perl
標準出力してたものを一度、変数内に納めてからJcodeでUTF-8に変換しよう。 と思いヒアドキュメントはどうやって格納するのかなと探してみた。 $hoge .= ほげほげ hogehoge HTML.=で$hogeに追加していき、最後に Jcode::convert($hoge,"utf8"); print $hoge;…
Perlで簡単な日記を作っており、テストで書き込んでみたところある文字が化けてしまうことが発覚。 調べてみると変換途中で'\'文字が入りおかしくなるとのこと。 対策として\文字をエスケープしてやるか,シングルクォートで文字列をくくればなんとかなるらし…
apacheのエラードキュメントを吐かせるCGIを作成中。 PHPで書かれてるものをみてPerlに直しえみるが$Request_URIなる変数はPerlではない模様。 いろいろ調べた結果%ENV{'REQUEST_URI'}がそれに相当するようだ。 他にも使えそうな環境変数をメモしておく。 $E…
mysqlデータベースのuserテーブルを書き直し、別ホストから何度もPerlを実行するがうまくいかない。 エラーメッセージをもとにMySQLへのアクセス権を変更して、 悪戦苦闘の末ようやく別ホストからもアクセスできるようになった。 mysqlデータベースを変更し…
MySQLが動くようになったのでApache鯖からMySQL鯖にアクセスできるようにしたい。 MySQL鯖自身のApacheではアクセスできるようになったので別ホストからもアクセスできるよう設定中。 Perlを使ってアクセスするのでlibdbd-mysql-perlをapt-getする。 でサン…
指定ディレクトリ以下のファイルの拡張子を変換する。 "rename"ってコマンドで同じことができるらしい。 使い方がわからなかったのでPerlで書いてみた。 #!/usr/local/bin/perl $root = $ARGV[0]; $before = "html"; $after = "shtml"; &rename_file($root);…
Windows= UNIX= Mac= っていうのは知っていたがPerlでやC言語で使われる"\n"は改行コードとしか理解しておらず, "\r"って復帰文字とかキャリッジリターンって呼ばれてるだけで何のためのコードか知らなかった。 今日CGIをいじっていて $line =~ s/\n/<br>/; $lin…
プログラムが自分でも見難くなってきた。 もう一度見直してモジュール化して作り直そうかな。
CGIでよくデータディレクトリまでのパスなどを変数として最初に定義するが絶対パスから指定するとうまくいかない。 実験で以下のプログラムを実行してみた。 opendir(DIR,"/"); @dir = readdir(DIR); &header; print "<ul>"; foreach $dir (@dir){ print "<li>$dir</li>\n</ul>…
昨日から思うようにプログラムが動かない。 いろいろ試した結果、思わぬところに改行があったせいだった。 エラーをHTMLで吐かせていたのでなかなか気付かなかった。 エラーHTMLのソースを見て変なところで改行されているのに気付き、やっと思うように動くよ…
参考にしているCGIがあるのだがやっぱり他人の書いたコードは読みづらい。 たぶん自分の書いたものもそうなのだろうけど・・・ 変数の名前の付け方を統一しておかないと自分でもコレは何の変数だったか分からなくなってしまう。 やっぱりちゃんと整理してか…
いつもヒアドキュメントを使う時はprint とシングルクォーテーションで囲っていたがコレでは変数が展開されない。print とダブルクォーテーションで囲えば展開してくれる。
cgi-lib.plの&ReadParse();を使ってリクエストメッセージを読む場合$in{'key'}と使うが %inに登録されているkeyを全部吐き出すコードを探してみた。 foreach $key (sort keys(%in)){ print "\$in{$key} = $in{$key}\n"; }sort keys(%in)でkeyをソートして配…
に付いての質問があったので簡単なスクリプトを書いてみた。 jump_url.cgi #!/usr/bin/perl$page1 = "http://webmaster.hatena.ne.jp/1054958611"; $page2 = "http://d.hatena.ne.jp/shinchan/"; $jump = "http://www.hatena.ne.jp";$query = $ENV{"QUERY_ST…
掲示板のパスワードの暗号化をcrypt関数を使ってやってみた。 crypt(暗号化前のpwd,2文字のキー) で13文字の暗号化された文字列を返してくれる。 暗号化されたパスワードはキーがわかっていても元には戻せないそうだ。 んで、パスワードを照会するときは cry…
いろいろな掲示板のプログラムを見て自分の掲示板を作ってみる。 といってもわかりやすい部分をパクってきてだが・・・ とりあえず書き込みができるようにはなったのだが,書き込むたびにデータの順番が崩れてしまう。 どうも余計なところに改行コードが入っ…
CGIで"print Can't find string terminator "EOD" anywhere before EOF ちゃんと終わりにEOFって書いてるし,何度見直してもおかしいところが見当たらない。 whileの中で使ってるのがまずいのかな?とかいろいろやってみるがダメだ。 しょうがないので一行ず…
いろいろやってみた結果、閉じる時のEOFの前に空白があったのが原因でした。 print EOD"と2つ空白をあけて宣言し," EOD"と閉じるとうまくいきました。 エディタで自動的にインデントが入るのは便利だけど、今回のような失敗も招くこともあるんだな。
flock関数 flock(ファイルハンドラ,ロック制御) ロック制御=1:読み込み中のため待ってもらう。 ロック制御=2:書き込み中のため待ってもらう。 ロック制御=4:読み(書き)込み中のためはねられる。 ロック制御=8:ロックを解除。 eval関数 eval{} {}内の式を…