Perl: 2008年12月アーカイブ

c:\> perl -e "print chr(7)"
WindowsにActivePerlがインストールされている場合、上記コマンドを打つとPCからビープ音が鳴ります。

マシンによっては大きい音が出るので、周囲にご注意を。

こちらの記事に触発されて、Perlでできないかやってみたら簡単にできました。
Beep音を鳴らす@VBScript
文字コード7番はBeep音ということで、プログラム言語を問わず共通なのでしょうか。

なお、コマンドプロンプトではCtr + G + EnterでもBeep音を出せるそうですね。
知らんかった。

   | コメント(0) | トラックバック(0)

ある特定のモジュールが、自分のマシンにインストール済みかどうかを調べる方法。
例えば、File::Pathモジュールが入っているかどうかを調べたいなら

c:\>perl -MFile::Path -e;

これでエラーが出なければ、入っている。

逆に、入っていないモジュールの場合だと、

c:\>perl -MFoo::Bar -e;
Can't locate Foo/Bar.pm in @INC (@INC contains: ....

みたいなエラーが出る。


Googleでいろいろ検索したんですが、@INCの中身を調べて..みたいな大掛かりなやり方しか出てきませんね。

結局、自分で上記方法を思いつきました。

何か間違ってたら、ご指摘くださいませ。

   | コメント(0) | トラックバック(0)

[Perl]定数を使う   はてなブックマークに登録  

いまいちベストなやり方がよくわかりません。

私は定数はあまり使わないが、それで困った事はほとんどない。どうしてもというときは明示的に
sub DEBUG { 1 } # DEBUG 
を定数として使う
http://blog.livedoor.jp/dankogai/archives/50465942.html


ということなので、Danさんのこのやり方に従うことにしてみます。

   | コメント(0) | トラックバック(0)

[Perl]ppmをCUI(シェル)モードで起動する   はてなブックマークに登録  

意外と知られていない技。

C:\>ppm
と入力すると、GUIモードで起動する。 勝手にウィンドウが立ち上がってウザイですね。

C:\p>pm-shell
と入力すればCUIモードで起動する。
昔ながらのコマンドラインモードで操作できます。
お試しあれ。
   | コメント(0) | トラックバック(0)

最近やっとOOPでPerlを書けるようになってきて、Class::Accessor::Fastなるモジュールの存在を知りました。
ところがppmで検索してもClass::Accessor::Fast::** みたいな親戚モジュールばっかり出てきて、肝心のClass::Accessor::Fast本体が見つかりませんでした。

c:\>ppm serach Class-Accessor-Fast
1: Class-Accessor-Fast-Contained
Fast accessors with data containment
Version: 1.01
Released: 2008-11-08
Repo: ActiveState Package Repository

2: Class-Accessor-Fast-Contained
Fast accessors with data containment
Version: 1.01
Repo: trouchelle

3: Class-Accessor-Fast-GXS
generate C::A::Fast compatible XS accessors
Version: 0.01
Released: 2008-05-05
Repo: ActiveState Package Repository

4: Class-Accessor-Fast-GXS
generate C::A::Fast compatible XS accessors
Version: 0.01
Repo: trouchelle

5: Class-Accessor-Fast-XS
XS replacement for Class::Accessor::Fast
Version: 0.02
Released: 2008-11-12
Repo: ActiveState Package Repository

6: Class-Accessor-Fast-XS
XS replacement for Class::Accessor::Fast
Version: 0.02
Repo: trouchelle

7: MooseX-Emulate-Class-Accessor-Fast
Emnulate Class::Accessor::Fast using attributes
Version: 0.00600
Released: 2008-12-17
Repo: ActiveState Package Repository

8: MooseX-Emulate-Class-Accessor-Fast
Emnulate Class::Accessor::Fast using attributes
Version: 0.00500
Repo: trouchelle

調べたら、cpanコマンドでインストールできるようです。
Windowsでもcpanコマンド使えるの知りませんでした。(><)

c:\>cpan
cpan> i Class::Accessor::Fast
cpan> q
c:\>perl -MClass::Accessor::Fast -e "print 1;"
1

無事インストールできました。^^

   | コメント(0) | トラックバック(0)
Perl/CGIをWindows+Apache+ActivePerlで開発して、本番環境はLinuxで動かすような場合、
Perlスクリプトの1行目を環境に応じて書き換える必要がありますよね。

#!/usr/bin/perl  (Linuxの場合)
 ↓
#!c:¥perl¥bin¥perl  (Windowsの場合)
これって不便ですよね。
書き換え忘れてLinux上で動かないことがありますよね。

そこで、#!/usr/bin/perlのままWindows + Apacheで動かす方法がないか調べてみたら、ありました。

Win32版ApacheでMT環境を構築する際の注意点

しかし上記のやり方だと私の環境ではエラーが出たので、
下記のようにやったら見事に動きました。

前提条件:

  • ActivePerlがC:¥perl¥bin¥perlにインストールされている。
  • 同じくCドライブにApacheがインストールされている。

やり方

  1. C:¥usr¥bin というフォルダを作る。
  2. C:¥perl¥binの中の perlperl5.10.0exe, perl510.dll perl.exeの3つのファイル(数字はバージョンによって異なります)を
    c:¥usr¥binにコピーして置く。
  3. httpd.confの最下行に1行書き加える。
  4. SetEnv PERL5LIB C:/perl/site/lib
    SetEnv PERL5LIB C:/perl/lib
  5. Apacheを再起動
これで、Perl/CGIの1行目が#!/usr/bin/perlのままでもWindows上で動くようになりました。

かんたん!!
しあわせ!!

【追記】2008.12.7
どうもこのやり方だと、1行目のSetEnvが2行目のSetEnvによって上書きされてしまい、1行目が無効になっているようです。
う~んどうすればよいのやら。。。
   | コメント(0) | トラックバック(0)

このアーカイブについて

このページには、2008年12月以降に書かれたブログ記事のうちPerlカテゴリに属しているものが含まれています。

前のアーカイブはPerl: 2008年7月です。

次のアーカイブはPerl: 2009年2月です。