Tag-Archive for » Perl «

金曜日, 2 月 26th, 2010 | Author: djodjo

前はJava屋さんだったので、eclipseを使ってた流れからPerlが多い今も、eclipse使ってます。
EPIC Perl プラグインを入れてるんですが、このプラグインはコード整形をPerl::Tidyでやってます。

PerlでCGIで、サーバはLinuxなので改行コードはおのずとLFなんだけど、コード整形するとCRLFに変わっているという話。

プログラミングをしているうちに、ソースの改行コードがいつの間にかLFからCRLFになってしまう怪現象。
projectの設定はUNIXでLFだし、新規作成のファイルはLFだしと悩んでたら犯人がわかりました。

Perl::Tidyでした。

どうも、ソースを除くと環境からコード整形後の改行コードを変更している。
なるほど、ありました設定。「-ole=unix」これでOK。
このオプション、windosunix, macから選択可能。

http://perltidy.sourceforge.net/perltidy.html


木曜日, 9 月 17th, 2009 | Author: djodjo

Perl の CGI.pmはよくお世話になりますが、UTF8を扱おうとすると、utf8フラグがたったり、なかったりと問題があるようで、めんどくさいのでCGI.pmでパラメータ受け取るときにすべてのパラメータを一度に処理してます。

1件ごとでなくて、飛んできたパラメータ全部をdecodeしてみる。

use CGI;

for my $p ($CGI->param) {
    my @v = map {Encode:: decode_utf8 ($_)} $CGI->param($p);
    $CGI->param($p,@v);
}

たつをのChangeLog殿から、dankogai殿の指摘をみて、自分のコードも少々修正してみました。
たつをのChangeLog Perl の utf8 まわりのおまじない

use utf8;
use CGI;
...
my $text = $q->param('text') || "";
utf8::decode($text) unless utf8::is_utf8($text);
...

Encode:: decode_utf8を使いましょうとのご指摘はこちら。
http://blog.livedoor.jp/dankogai/archives/51290188.html

Validationの観点だけではなく、簡潔性の観点からも、Encode::decode_utf8()はおすすめです。すでに UTF-8 flag がついた文字列はそのままコピーするだけなので、条件分岐も不要です。

なるほどー

Category: Perl  | Tags:  | Leave a Comment
日曜日, 8 月 30th, 2009 | Author: djodjo

CGIやPHPでとれる環境変数、REQUEST_URIとSCRIPT_NAMEですが、普通に使う分には中身が同じなので気にしてなかったのですが、mod_rewriteを使ったら、あら!違うじゃないですか。とハマッたのでメモ

以下のように、とあるCGIにアクセスした場合は

http://localhost/info.cgi
REQUEST_URI /info.cgi
SCRIPT_NAME /info.cgi
おなじ

じゃ、例えば
http://example.jp/blog/200908/01.html
といったURLを
http://example.jp/blog/article.cgi?id=20090801
と書き換えたとすると、REQUEST_URIとSCRIPT_NAMEはそれぞれ以下のようになる。

▼ブラウザから送られてきた要求のURI
$ENV{REQUEST_URI} = /blog/200908/01.html

▼CGIスクリプト名
$ENV{SCRIPT_NAME} = /blog/article.cgi

ポイントは、

REQUEST_URIはそのまま、【ブラウザから送られてきた要求のURI
SCRIPT_NAME
は【実行されているスクリプトのパス】ですね。

はまりポイントである。

Category: Perl  | Tags: ,  | One Comment
月曜日, 8 月 03rd, 2009 | Author: djodjo

cpanコマンドの設定メモ。よく忘れるんだこれが。

  • 設定一覧
    • o conf
  • CPANミラーのURL設定
    • o conf urllist [http://......,http://.....]
  • CPANミラーのURL追加
    • o conf urllist push 追加するURL
      • これでurllistの後ろに追加される
    • o conf urllist unshift 追加するURL
      • これでurllistの先頭に追加される
  • CPANミラーのURL削除
    • o conf urllist pop 削除するURL
  • Proxyの設定
    • o conf http_proxy http://プロキシ名:ポート
    • o con ftp_proxy http://プロキシ名:ポート
  • Proxyに認証がいる場合
    • o conf proxy_user ユーザ名
    • o conf proxy_pass パスワード
  • 設定の確定・保存
    • o conf commit
    • これを忘れると保存されない。

Category: Perl  | Tags:  | Leave a Comment
月曜日, 8 月 03rd, 2009 | Author: djodjo

StrawberryPerlでWeb::Scraperインストールしようとしたら
not_found_libxml2_dll
って怒られた。
libxml2.dllはというと下記にあるという。
http://xmlsoft.org/sources/win32/
ここからダウンロードして再チャレンジ

とおもったら、StrawberryPerlってこれらDLLを内包しているのがメリットだったはず!!
探してみると
c:\strawberry\c
の下にDLLがあるある。

結局、
c:\strawberry\c
がPATHに含まれていないのが問題でした。

特に気にせずインストールすればPATHには自動で追加されるはずです。
(インストール前に起動したcmd.exeつかってた・・・)

Category: Perl, 未分類  | Tags: , ,  | Leave a Comment
月曜日, 8 月 03rd, 2009 | Author: djodjo

今までActivePerlをよく使ってたんですが、StrawberryPerlってのもあり試してみることに。
ただ、今までの環境も壊したくないのでC:\Perlをシンボリックリンクにしたいなぁと。
で、シンボリックリンクはショートカットとは異なるので作るのは下記のコマンド

mklink /d c:\perl c:\ActivePerl

/dオプションつけなければファイルとしてリンクが作られる。

注意!
削除するときはdelコマンドではなく、rdコマンド
rd c:\perl

delだとその中身まで消えてしまうらしい・・・・えっ?なにそれ。コワイ

Category: Perl  | Tags: ,  | One Comment
金曜日, 2 月 13th, 2009 | Author: djodjo

ご存知のとおりオブジェクトリテラルを各際に以下のように最後にカンマがついたままの場合、Firefoxなどは問題ないですが、IEでは読み込み時にエラーとなります。

ですが、結構、埋め込んでしまうバグなので自動的に見つけようとして書いたPerlプログラムがこちら。
なぜ、Perlかは….慣れているからってだけです。

デフォルトでカレントディレクトリ配下の*.jsファイルを探索しに行くので、プロジェクトの直下とか置いておけば叩くだけ。

Windowsでも動きます。
more…