高見知英のかいはつにっし(β)

高見知英のアプリケーション開発日誌 のほか、地域活動などの活動報告ブログ。

Perl

正規表現で行こう

現在自由帳の文章を移行中です。自由帳のような大見出しがあって、タイトルがあって、それをクリックすると記事が見られて…という構造の文章は、TMemo.plというライブラリにやってもらいます。で、はてなのような簡易タグを展開する機能付き(こっちは、docum…

解決…?

昨日 id:TakamiChie:20050405 から悩んでたPerlでの問題(バグかどうかはおいといて、とりあえず存在してるのは事実だから…)、あらを探すと結構あったので(といっても、strictにすると問題のある変数があったとか、それくらいですが)、それを直してみたものの…

use strict

どうもuse strictの有効範囲はuseしたファイル内のみらしいです。 use strictをしたファイルから、別のplファイルをrequireすると、そこでは変数宣言がなくても変数が使えるようになります…。 (~ヘ~)ウーン、面倒だなぁ、requireのパスは最初に読み込んだフ…

うーんん?

昨日からいきなりこんなエラーが Attempt to free unreferenced scalar: SV 0x1562318, Perl interpreter: 0x274304 at ./lib/main.pl line 233. Googleで検索して見たところ、参照カウント周りでエラーが起こったようですが、何が起こったのだか。検索結果…

はちゃめちゃソート

リストをでたらめに並び替える方法 my @a = sort { int(rand(4)) - 2 } @_; my @a = sort { int(rand(2)) - 1 } @_;でも十分だと思ったんですが、あまりにばらつきがありませんでした(繰り返しても並び順があまり変わらない)。この辺はなんだか、他の言語に…

そういうことだ!

この内容のお隣日記で見つけました。 id:aql:20050330#p2 ん、まさにこんな感じです。上で書いたスプリッタと透過タグとログ形式も、わたしなりのルールですしね。 Perlって、他の言語ほどぴっちりオブジェクト指向なんてものではないので、とくに自分で決め…

これは発明!…かも

わたしは前から、テンプレートを読み込み、それを処理するという方式でCGIを作ってきました。そのことは前にも書いたとおりです。 わたしのテンプレートは、主に二つの要素で成り立ってます。 透過タグ*1 スプリッタ それぞれは以下のような書式になっていま…

おんぷ村改装

ちょっと、おんぷ村の改装にも手をつけてみます。全面Perlで、PATH_INFOを使って各コンテンツを辿るという方向で行きたいと思います。ちょうど04WebServerもバージョンがあがって、PATH_INFを処理できるようになったようですし。 さて…。こうなると、下手に…

集中!

いくらdieで変数のモニターが簡単にできるようになったとは言っても、やっぱりPerlのデバッグってのはやりづらいですね、まあ、あくまでちゃんとしたデバッグツールがある開発環境と比べてなんでしょうが、出力方法がこれしかないというのは、何とも…。 せめ…

うーん、Nifty…

昨日、Perlモジュールで結構いろんなことができると分かったあと、サーバアナライズ用CGIというのを見つけました。 http://www.futomi.com/library/servana.html 使用できるPerlモジュールまで表示してくれます。インフォシークって結構いろんなモジュールが…

<br>の自動挿入

さて、CGIを作る場合、ほとんどのケースで改行を<br>に変換するという作業が必要になります。 簡単に考えればs/\n/<br \/>/gあたりで済んでしまうんですが、中にDIVなど、改行をタグにされては困る箇所があった場合、どうすればいいか、まさか、DIV内を全部一行で書けな…

結構使える!

Perlって、思ったよりも結構いろんなことができます。Zip圧縮もできるんですね、しかも、割と使いやすそう。 Archive::Zipというライブラリを使うんですが、フォルダを作ってその中に投げ込むような感覚で、ZIP書庫を操作できます。 調子に乗って、TWatchの…

設置完了&ついでに更新

CGIの設置、完了しました。いやまあ、寝てません(^_^;)3時くらいからかな。 ――で、まあ、みれば分かるかと思いますが、おんぷ村の裏の倉庫を、単純にCGI化しただけです。管理者がブラウザからアップできるようにしたので、これで以前よりは気軽に更新できる…

設置中

例のCGIができましたので、現在おんぷ村のうらに設置してます。うーん、朝にはできるかな? このCGIのレコード様式は、前に書いたかも知れませんがほかと違って、 名前1:値1(単行) 名前2:値2 ・ ・ ・ 名前n:値n (空行) 値(ここだけ複数行OK) - という形式の…

便利なWebサーバ

HTTPDがWindowsXPではなぜか動かないので、あっちこっちのWebサーバソフトを物色してたんですが、便利なソフトを見つけました。「04WebServer」のページは移転いたしました ふつう、Webサーバだと、標準エラーは見せてくれないのですが、これは標準エラーも…

,つきと,なし

うーん、このへんがPerlのわかりにくいところ? 関数に引数を引き渡すとき、ふつうは引数を,で区切りますが、区切らないケースもある様です。sortで比較用メソッドを使うときとか、ファイルハンドルにprintするときとか。 sortなんか、,があってもとりあえず…

日本語フォルダ名

今書いているCGIは、仕様上日本語名のディレクトリを作ってしまいます(ユーザーに直接アクセスはさせない)、CGIしかアクセスしないし、問題ないとは思いますが…。 むりなら通し番号でファイルやディレクトリを作る方法もあるんですけど…。 日本語も結局文字…

ExtractFileName

DelphiのExtractFileName(ファイルパスからファイル名のみを抽出)に相当する正規表現 s/(.+)[\\\/]([^\\\/]+)/$2/ かなりインチキっぽい気がしますが、ちゃんと動きました(^^;たぶんUNIX環境下でも動く…かな。 $SELFFILE = $0; $SELFFILE =~ s/(.+)[\\\/]([^…

改行コードに注意

my($filename) = @_; my(@lines); if(open(FILE, $filename)) { # ファイルロード #@lines = ; foreach(){ push(@lines, $_); } close FILE; return @lines; }else{ return (); } このようなコードでファイルを読み込んで配列にしまう場合、 foreach()は、改…

リファレンスの操作

Perlは記号だらけなので、気を抜いているとすぐ何がなんだか分からなくなります。 対応する括弧を強調表示するエディタを使えば見やすかったかな…(^_^; サブルーチンに配列やハッシュリストを渡したい場合、リファレンスで渡さなければならないようですが、…

Perlデバッガ

Perlにはデバッガがちゃんとあるんですね。Perl -d (スクリプト名) で起動できます。開発環境から使うのよりはかなり効率が落ちますが、基本的には DB(x) > と出力されたら s と入れるだけで適当に進んでくれますから、流れを確認するには十分です。Wを使っ…

お話の再公開?

年も暮れだし、2001年に書いた、サンタクロースのお話をもう一度公開させようと思います。 出来ればCGIかJAVAアプレットで、やりたいと思っているのですが…。 JAVAアプレットに取り組んでみたものの、どうも結構面倒そうです。HTMLの表示は良いのですが、そ…