Perl: 2008年12月アーカイブ
c:\> perl -e "print chr(7)"
WindowsにActivePerlがインストールされている場合、上記コマンドを打つとPCからビープ音が鳴ります。
マシンによっては大きい音が出るので、周囲にご注意を。
こちらの記事に触発されて、Perlでできないかやってみたら簡単にできました。
Beep音を鳴らす@VBScript
文字コード7番はBeep音ということで、プログラム言語を問わず共通なのでしょうか。
なお、コマンドプロンプトではCtr + G + EnterでもBeep音を出せるそうですね。
知らんかった。
ある特定のモジュールが、自分のマシンにインストール済みかどうかを調べる方法。
例えば、File::Pathモジュールが入っているかどうかを調べたいなら
c:\>perl -MFile::Path -e;これでエラーが出なければ、入っている。
逆に、入っていないモジュールの場合だと、
c:\>perl -MFoo::Bar -e;
Can't locate Foo/Bar.pm in @INC (@INC contains: ....みたいなエラーが出る。
Googleでいろいろ検索したんですが、@INCの中身を調べて..みたいな大掛かりなやり方しか出てきませんね。
結局、自分で上記方法を思いつきました。
何か間違ってたら、ご指摘くださいませ。
いまいちベストなやり方がよくわかりません。
私は定数はあまり使わないが、それで困った事はほとんどない。どうしてもというときは明示的に
を定数として使うsub DEBUG { 1 } # DEBUG
http://blog.livedoor.jp/dankogai/archives/50465942.html
ということなので、Danさんのこのやり方に従うことにしてみます。
意外と知られていない技。
C:\>ppm
と入力すると、GUIモードで起動する。
勝手にウィンドウが立ち上がってウザイですね。
C:\p>pm-shell
と入力すればCUIモードで起動する。昔ながらのコマンドラインモードで操作できます。
お試しあれ。
最近やっと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
無事インストールできました。^^
Perlスクリプトの1行目を環境に応じて書き換える必要がありますよね。
#!/usr/bin/perl (Linuxの場合)
↓
#!c:¥perl¥bin¥perl (Windowsの場合)
これって不便ですよね。書き換え忘れてLinux上で動かないことがありますよね。
そこで、#!/usr/bin/perlのままWindows + Apacheで動かす方法がないか調べてみたら、ありました。
しかし上記のやり方だと私の環境ではエラーが出たので、
下記のようにやったら見事に動きました。
前提条件:
- ActivePerlがC:¥perl¥bin¥perlにインストールされている。
- 同じくCドライブにApacheがインストールされている。
やり方
- C:¥usr¥bin というフォルダを作る。
- C:¥perl¥binの中の perlperl5.10.0exe, perl510.dll perl.exeの3つのファイル(数字はバージョンによって異なります)を
c:¥usr¥binにコピーして置く。 - httpd.confの最下行に1行書き加える。
- Apacheを再起動
SetEnv PERL5LIB C:/perl/site/lib
SetEnv PERL5LIB C:/perl/lib
かんたん!!
しあわせ!!
【追記】2008.12.7
どうもこのやり方だと、1行目のSetEnvが2行目のSetEnvによって上書きされてしまい、1行目が無効になっているようです。う~んどうすればよいのやら。。。