ラベル Perl の投稿を表示しています。 すべての投稿を表示
ラベル Perl の投稿を表示しています。 すべての投稿を表示

2012/05/27

[Perl] モジュールが使えるか確認する


perl -MMODULE_NAME -e ''
  ex)Image::Magick が利用可能かどうか調べる
  perl -MImage::Magick -e ''
モジュールが使えないとエラーが出る
Can't locate Image/Magick.pm in @INC (@INC contains: [....この部分は環境によって異なる.....]).
BEGIN failed--compilation aborted.
使える場合は 何も出ない
参考)




2012/05/26

[Perl] mkdirでパーミッション777にならない


mkdir "[dir_path]", 0777 or die &procEnd("[WARNING]error:mkdir 0777 [dir_path]");
↑で 777ディレクトリが作れなくて ナンデジャボケー(# ゚Д゚)コラー って暴れてたら
perlでmkdirするときは umask設定を解除しないとダメらしいとのこと。ぐはー!!
↓魔法の言葉
umask(0);
mkdir ~~
アリガトウゴザイマス<(_ _)>




2012/05/10

/usr/bin/env について


shcshperlruby などのスクリプトでは、先頭行(「!#」で始まる行)でスクリプトインタープリタへのパスを宣言しています。 このパスがちゃんと通っていればスクリプトが動く。
 →「#!」のことを「シェバング」(shebang) と呼ぶ。また、この行全体を「シェバング行」と呼ぶ。
先日Apache再起動した際、Hiki(ruby)が500エラーで起動しないことがあって、Apacheエラーログを調べたら hiki.cgiアクセスした際「Rubyがみつからないょ」的なエラーメッセージが残ってた。
hiki.cgiを開いてみると、シェバング行で以下のように記述されていた。
#!/usr/bin/env ruby
・・・なんだこのパス指定は。
始めてみる指定なので「/usr/bin/env」でぐぐったら、結構ヒット。
感覚的に批判のページのほうが多いかな?
ワシもこの指定でのメリットが感じられないので、従来どおりのパス指定で完了。
#!/usr/local/bin/ruby

CPAN モジュールを追加する


Perl小数点以下の数値の丸めこみをしようとしたら、PHPのround()のような関数が無いらしく…( ̄ω ̄)CPANのMath::Roundを使えば、同じことができるらしいのでインストールする。
とりあえずCPANモジュール検索で「Math::Round」を検索してGET。(Math-Round-0.06.tar.gz)
[winの場合]

2010-12-07



解凍したDIR内に「Round.pm」があるので、それをperlモジュールDIR(ワシのlocalだとC:\Perl\lib\)に入れるか、任意のDIR作成し、そこに入れたら、プログラム内でパスを通してやるかのどっちかでOK。
説明
sample.cgi
lib/
↑libディレクトリを作ってやって、そこに放り込む。
sample.cgiの中身はこんな感じ↓。
#!perl
use lib ("./","./lib");
use Round qw/nearest/;
[Linuxの場合]
tar.gzを鯖の適当な場所へUPして、解凍したら、解凍したDIRへ移動する。
インストール作業は解凍DIR内で行う。
READMEがあれば、読む。たいていインストール方法が書いてある。
Round.pmの場合はこんな感じで書いてあった↓
How to Install
==============
make
make test
make install
まったく、その通りにやれば勝手にpathの通ってる場所へインストールしてくれる。楽ちん。

URLエンコード・デコード


2010-11-29



久々にperlをいじったけど、すっかりURLエンコードについて忘れてる…。
やり方もいろいろある用で…。うーん
とりあえず、「+」だけは 別で置換しろ・・・と。
sub url_encode($) {
    my $str = shift;
    $str =~ s/([^\w ])/'%'.unpack('H2', $1)/eg;
    $str =~ tr/ /+/;
    return $str;
}
sub url_decode($) {
my $str = shift;
$str =~ tr/+/ /;
$str =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack('H2', $1)/eg;
return $str;
}