メイン

カテゴリ : Perl

このカテゴリに含まれているタグ

2008年01月13日

CGI.pmでdisabledが効かなくなった?

久しぶりにゲームのスクリプトの続きを作っていたら、変なところで引っかかった。
ラジオボタンである箇所を選択不可能に設定していたはずなのに、それが効いていないのだ。

XHTMLで書くと

<label><input type="radio" name="new_class" value="1" disabled="disabled" tabindex="1" />1</label>
<label><input type="radio" name="new_class" value="2" tabindex="2" />2</label>

この1番のようになってほしいわけです。

CGI.pmが3.10のサーバで動かしてみるとちゃんと認識する、ということは確認したのだが、手元の3.33ではdisabledが認識されない。

続きを読む "CGI.pmでdisabledが効かなくなった?" »

2007年11月02日

コードの書き直しで失敗

この汚いコード、明日までに書き直しちゃえ! ? @IT自分戦略研究所

なんというか、書き直したわけではないのですが、新しく機能を追加してバグを生んでしまったというお話です。

機能といっても、渡された引数の中身を見て必要ならエスケープする、という単純な事なのですが。
で、書き直した時は従来の機能を損なわずに変更したつもりでした。
しかし、見事に損なっていたわけです。

エスケープするつもりの無いものまでがエスケープされてしまっていました。

敗因は、面倒くさがって自動的に判別させようとした、という事だろうと結論付けています。
エスケープが必要な場合は、スイッチになる引数を渡す、という処理をすればよかったのだと。
今はそう思っています。

…結局、そのバグは下手に触れないので、呼び出し側で何とかしましたが、いずれは直さないといけないなと思いながら、それでまたバグが…と思うとなかなか無理です。

2006年12月09日

リメイク:自分の名前を調べる

自分の名前を調べる@のぶろぐ

今回も、今後のPerlで推奨されるであろう書き方(UTF-8で書いて、「use utf8;」を用いる)をしてみました。
前回と違うのは、Encodeを明示的に使うのではなく、PerlIOに対して直接細工をします。

参考:Perl 5.8.x Unicode関連

Wide character な文字列はそのまま出力すると文句を言われるというわけです。 回避するには、PerlIOレイヤを使うか、UTF8フラグを落とします。

UTF8フラグをいかに落とすか、って事ですね。

サンプル

続きを読む "リメイク:自分の名前を調べる" »

2006年11月30日

リメイク:「戻る」リンクを作る

「戻る」リンクを作る@のぶろぐ

今回は、今後のPerlで推奨されるであろう、「use utf8;」を使ってみた。

CGI.pmでは、環境変数に直接アクセスしなくても取得できる。
もちろん、間接的にはアクセスするわけだが。

もし、環境変数が%ENVじゃなくて、%Environmentという変数に変わったとしたら、そのソースコードは動くでしょうか?
CGI.pmを介して環境変数にアクセスしているのであれば、新しい環境変数に対応したCGI.pmにアップグレードされれば、ソースコードを変更する必要は無い。

今回はサンプル付きです。

続きを読む "リメイク:「戻る」リンクを作る" »

2006年11月20日

perltidyを試してみた

perltidyというのは、Perlベストプラクティスに載っている、ソースコードを綺麗に整形してくれるソフト。

最初は実行形式のプログラムだと思っていたら、Perlスクリプトだった。
考えてみれば、PerlをWindowsでやっていることがどちらかといえばイレギュラーなので、Windowsの実行形式でないのは当然か。

インストールの方法がよくわからなかったのだが、モジュールならcpanからインストールできるんじゃないかと思ってモジュール名を指定したところ、ズバリ、ありました。
そのままインストールを開始。

続きを読む "perltidyを試してみた" »

2006年11月19日

Perlベストプラクティスを買ってきた

今更な感じはするけれど。
ここ最近になっていろいろなサイトを見てまわったり、CatalystやPlaggerを入れてみたり使ってみたりしているうちに、段々と知識欲が出てきた。
もっとPerlの事を知りたいと。

続きを読む "Perlベストプラクティスを買ってきた" »

2006年11月15日

モジュールの一括更新

モジュールの一括更新@のぶろぐ

perl -MCPAN -e "CPAN::Shell->install(CPAN::Shell->r)"

最近のCPANモジュール(Ver1.8802)では、

perl -MCPAN -e "CPAN::Shell->upgrade"

で良いようだ。
いつから出来たんだろ?

特定のインデックステンプレートを自動的に再構築する方法

…ということで検索をしていると、mt-rebuild.plに行き着く。

MovableType備忘録: MovableTypeを自動的に再構築する

一つのテンプレートを再構築するには十分なのだが、いくつかのテンプレートを効率よく再構築する方法は無いものか?

続きを読む "特定のインデックステンプレートを自動的に再構築する方法" »

ActivePerlのGUIなppmが微妙な件

む~。
設定が楽なのはいいのだが、リポジトリの順番が変えられないし、libにあるモジュールのアップデートなのにsite/libのほうにインストールされてしまう(libはロックされていて上書きできないようだ(?))。

GUIなら、例えばインストールしたいものをCtrlを押しながら選択していったり、Ctrl+Aで全て選択とかできればいいのだが、複数選択に対応していない…。

Plaggerをインストールする時に、このあたりの不便さに使うのが嫌になった。

続きを読む "ActivePerlのGUIなppmが微妙な件" »

2006年11月14日

Windows+ActivePerlにPlaggerを入れるの巻

なかなか手を出せなかったPlaggerに手を出してみた。

まるごとPerl! Vol.1で紹介されていたページ(しげふみメモ:Windowsで Plagger 準備#1 ActivePerlインストール)から、さらに便利なページができていた(しげふみメモ:Windowsで簡単にPlaggerをインストールする方法)ので、ppmを使ってインストールすることにしました。

続きを読む "Windows+ActivePerlにPlaggerを入れるの巻" »

2006年11月02日

リメイク:ファイルに書き出す

ファイルに書き出す (のぶろぐ)

書き直してみるシリーズ第3弾。

今回は、CGI::Prettyを使ってみた。
…と言ってもソースを見ただけでは何が違うのかわからないけど。

あと、Perl5.8っぽい書き方を目指してみた。

続きを読む "リメイク:ファイルに書き出す" »

2006年11月01日

defined-orという演算子

shag の日記 - defined-or(//)

先日の「undefと0と空文字列」で書いた「//」という演算子についてですが、名称としては「defined-or」というらしいですね。
しかも、5.8.1から使えているようです。
試してみるんだった。

2006年10月27日

リメイク:ファイルから読み込む

ファイルから読み込む (のぶろぐ)

書き直してみるシリーズ第2弾。

今回は、CGI.pmをfunctionスタイルではなく、OOP風に使ってみる。
以前は細かい処理も自分で書いていたが、使えるモジュールは使う方向で。
また、サブルーチンにもしてみた。

Encodeが標準装備となったPerl5.8以降は、文字コード関係の考え方ががらっと変わっている。
で、リメイクするにあたってPerl5.8風の書き方と、utf8を使っていこうと思ったのだが、とりあえず、今回はeuc-jpということで濁しておく。
前回はutf8で出力していたが、文字コードがutf8で書いた状態を想定しているだけで、新しい考え方で実行しているわけではない。

PerlEditorはutf8を扱えないので、挑戦するとしたらeuc-jpで書いたスクリプトをPerl5.8らしく動作させる、という方向になるだろう。
今、参考に見ているサイトをいくつか挙げておく。

Perl 5.8.x における日本語コード変換のメモ
Perl 5.8.x Unicode関連


続きを読む "リメイク:ファイルから読み込む" »

2006年10月22日

リメイク:サブルーチンを使う

サブルーチンを使う (のぶろぐ)

何年も前、Perlで作った初のCGIだったであろうものを、今改めて書き直してみる。
CGI.pmの習作としては冗長かもしれないが。

…しかも、サブルーチン使ってないし。

続きを読む "リメイク:サブルーチンを使う" »

2006年10月06日

エラーの処理方法で暗中模索

ファイルのコピー で使ったような「die」による強制終了は、ローカルで実行する分には問題はないと思うが、公開しているCGIのエラー処理を「die」で済ますのはあまりよろしくない。

続きを読む "エラーの処理方法で暗中模索" »

Perlのエントリー

最近のコメント

最近のトラックバック

Amazon.co.jp

Search Word Cloud

Creative Commons License
このブログは、次のライセンスで保護されています。 クリエイティブ・コモンズ・ライセンス.
Powered by
Movable Type 3.36
Amazon.co.jp