Perlの最近のブログ記事

ファイル内のfooをすべてpiyoに置換するにはこうします。
perl -pi -e 's/foo/piyo/g' file.txt

sedでやるならこう。
sed -i -e 's/foo/piyo/g' file.txt
Apacheのエラーログで表題のようなエラーがある場合、CGIの1行目のシェバン(#!/usr/bin/perl)が間違っている可能性が高いです。

#!/usr/bin/perl

#!/usr/loca/bin/perl

などいろいろな書き方があります。
Perlのインストール場所がどこなのか、確認しましょう。

コマンドラインからwhich perlとコマンドをうてば、Perlのインストール場所がわかります。
$ which perl
/usr/local/bin/perl
ImageMagickとActivePerlは、相性問題が難しいことで有名です。
バージョンにちょっとでも齟齬があると動いてくれません。

そこで、ImageMagickとActivePerlを確実に動作させる方法を紹介します。

ImageMagickのインストーラ画面にヒントが・・!

ポイントは2つ。

  • expat-develパッケージが必要。
  • LWP::UserAgent::Determinedのテストがこけるので、force installする。
$ sudo yum install expat-devel
$ cpanm  LWP::UserAgent::Determined --force
$ cpanm  Amazon::S3
これでいけるはずです。
Perlで、AmazonS3にファイルをうpするには下記のようにします。

use strict;
use warnings;
use Amazon::S3;

my $s3 = Amazon::S3->new({
        aws_access_key_id     => 'foo',  # アクセスキーID 
        aws_secret_access_key => 'bar',  # シークレットアクセスキー
        retry                 => 1,
     });

my $bucket = $s3->bucket('yourbucketname'); # あらかじめ作成したバケット名を指定

my $filepath = '/tmp/hello.txt';  # ローカルのファイルパス名
my $keyname = 'tmp/hello.txt';    # S3上のオブジェクトパス名

$bucket->add_key_filename($keyname, $filepath)  or die $s3->err . ':' . $s3->errstr;
空行を除くと12行です。
CentOS 6.0にperlbrewとPerl 5.14.2とcpanmをインストールする方法を紹介します。

rootではなく一般ユーザとして実行してください

s3cmdを使えばAmazonS3に大量のファイルを一気にアップロードできますが、スピードが遅いのが難点です。

そこで、Perlで並列アップロードするツールを作ってみたら、6倍高速化できました。
よかったら使ってみてください。
(ソースコードは一番下にあります)
PerlからAmazon S3を利用するには、Net::Amazon::S3とAmazon::S3という2つのモジュールがあります。

こちらの記事によると、Amazon::S3の方が依存モジュールが少なくてインストールが楽と書いてありました。

CentOS 5.3で早速インストールしようとしてみたら、期待に反して依存モジュールのせいで見事にこけました(泣笑)
PerlのXMLRPC::Liteモジュールを使うと、任意のウェブサイトとか任意のブログの総はてぶ数を簡単に数えることができます。

XMLRPC::Liteをインストール

DBD::mysqlをCPANからインストールしようとしたら、テストがこけました。
How to run MovableType with Plack という面白そうな記事があったのでやってみました。
Plackというウェブサーバをインストールして、静的ファイル(html,cssや画像など)を配信する方法を解説します。
Perl製のPlackというウェブサーバをインストールして、hello worldを表示する方法を解説します。

ここではPSGIについては触れません。
CentOS5.6にPerlbrewとPerl5.14.1をインストールする方法を紹介します

2011/8/13現在では下記のようにやるのが最新の方法のようです。
でもそれを見て心がなごんだ。
http://twitter.com/#!/DQNEO/status/99831937153253376
勘違いしてる人がたまにいるのですが、ImageMagickとImage::Magick(別名PerlMagick)は別物です。

ImageMagickとは、C言語で書かれた画像処理ソフトウェア・ライブラリ一式のことです。
Image::Magick(別名PerlMagick)とは、PerlからImageMagickを操作するためのPerlモジュールです。(こういうのをバイディングといったりします。)
もし高校野球の女子マネージャーがPHPのin_arrayをPerlで実装したら。
Perlでクラス名を調べるには下記のようにします。
print ref $obj;

オブジェクトのクラス名を調べるサンプルコード

use strict;
use CGI;

my $obj = CGI->new;
print ref $obj,"\n"; # => 'CGI'
PerlのRPC::XML::Clientモジュールを使えば、MovableTypeのカテゴリ一覧を取得することができます。
PerlのXMLRPC::Liteモジュールを使えば、MovableTypeに簡単に記事を投稿することができます。
重たい管理画面にログインしなくて済むので非常に快適です。

人気記事

このアーカイブについて

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

前のカテゴリはJavaScriptです。

次のカテゴリはPerl再入門です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

最近の人気記事