Perl

ヒアドキュメントで変数に格納する

標準出力してたものを一度、変数内に納めてからJcodeでUTF-8に変換しよう。 と思いヒアドキュメントはどうやって格納するのかなと探してみた。 $hoge .= ほげほげ hogehoge HTML.=で$hogeに追加していき、最後に Jcode::convert($hoge,"utf8"); print $hoge;…

侮ヲ

Perlで簡単な日記を作っており、テストで書き込んでみたところある文字が化けてしまうことが発覚。 調べてみると変換途中で'\'文字が入りおかしくなるとのこと。 対策として\文字をエスケープしてやるか,シングルクォートで文字列をくくればなんとかなるらし…

%ENV

apacheのエラードキュメントを吐かせるCGIを作成中。 PHPで書かれてるものをみてPerlに直しえみるが$Request_URIなる変数はPerlではない模様。 いろいろ調べた結果%ENV{'REQUEST_URI'}がそれに相当するようだ。 他にも使えそうな環境変数をメモしておく。 $E…

MySQL

mysqlデータベースのuserテーブルを書き直し、別ホストから何度もPerlを実行するがうまくいかない。 エラーメッセージをもとにMySQLへのアクセス権を変更して、 悪戦苦闘の末ようやく別ホストからもアクセスできるようになった。 mysqlデータベースを変更し…

MySQL:DBIモジュール

MySQLが動くようになったのでApache鯖からMySQL鯖にアクセスできるようにしたい。 MySQL鯖自身のApacheではアクセスできるようになったので別ホストからもアクセスできるよう設定中。 Perlを使ってアクセスするのでlibdbd-mysql-perlをapt-getする。 でサン…

今日のPerlプログラム(rename.pl)

指定ディレクトリ以下のファイルの拡張子を変換する。 "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を作成中

参考にしている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をソートして配…

URLジャンプスクリプト

に付いての質問があったので簡単なスクリプトを書いてみた。 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{} {}内の式を…