memo.xight.org

日々のメモ

カテゴリ : Perl

5ページ目 / 全7ページ

WWW::Mixi - Mixiに簡単にアクセスするための LWP::UserAgent ライクなモジュール

mixi Log Loader - mixi "足あと" 保存 + 解析Perlスクリプト

  WWW::Mixi を用いている.
  http://hsj.jp/works/archives/001055.html

Reference

  Perlモジュール/WWW::Mixi
  http://digit.que.ne.jp/work/?Perl%A5%E2%A5%B8%A5%E5%A1%BC%A5%EB%2FWWW%3A%3AMixi
  mixi - WWW::Mixi コミュニティ
  http://mixi.jp/view_community.pl?id=43735

HTMLエンティティ生成

Summary

  10進,16進のHTMLエンティティを生成できる.

Perl モジュール

  HTML::Entities は日本語が使えない.
  HTML::Entities::Numbered というモジュールもあるのか.

PHP

  mb_encode_numericentity - 文字をHTML数値エンティティにエンコードする
  mb_decode_numericentity - HTML数値エンティティを文字にデコードする

追記

  FreeMind が日本語文字列を「16進のHTMLエンティティ」で出力するので困る.

Reference

  HTMLエンティティ化
  http://hp.vector.co.jp/authors/VA022023/javascript/make_html_entity-ja.htm

  HTMLエンティティ生成
  http://gadd9.com/soft/entity.html

HTML::Entities
HTML::Entities::Numbered
PHP Manual - mb_decode_numericentity
PHP Manual - mb_encode_numericentity

via

  blog.bulknews.net - 2004-08-12
  http://blog.bulknews.net/mt/archives/001184.html

pp , perlcc

perlcc

  Perl プログラムから実行形式を生成

perlcc を使用してバイナリ作成の注意

  ・cygwin の perlcc は cygwin.dll が必須
  ・ActivePerl の perlcc は Visual Studio が必要
  ・perl を mingw でソースからコンパイルすればOK

pp

  Perl パッケージャ (Perl Packager)

Reference

  perldoc.jp - pp
  http://perldoc.jp/docs/modules/PAR-0.75/script/pp.pod
  perlcc
  http://fleur.hio.jp/~hio/perldoc/mix/bin/perlcc.html

via

  Earl Grey Labratory's Blog - 2004-10-29
  http://d.hatena.ne.jp/lethevert/20041029#p2

Debian GNU/LinuxでCPANに登録されているモジュールをインストールする

dh-make-perl パッケージをインストールする

# aptitude install dh-make-perl


Template::Extract をインストールする例

  - libtemplate-extract-perl というパッケージを作成する

$ dh-make-perl --build --cpan Template::Extract


  - インストール

# dpkg -i libtemplate-extract-perl


Reference

  namazu.org - 土屋 雅稔 - Debian Tips
  http://namazu.org/~tsuchiya/debian/
  Naney's Web Site - nDiki - dh-make-perl
  http://www.naney.org/diki/dk/dh-make-perl.html

chalowの CPAN 検索プラグイン

CPAN 検索プラグイン

### CPAN Moduleの検索リンク
# usage: {{cpan_search('Keyword','mode')}}
# mode : all    - Search in All
#        dist   - Search in Distributions
#        module - Search in Modules (default)
#        author - Search in Author
sub cpan_search {
	my ($word,$mode) = @_;
	my $prefix = q(http://search.cpan.org/search);
	if ($mode ne 'all' && $mode ne 'dist' && $mode ne 'author' && $mode ne 'module'){
		$mode = q(all);
	}
	return qq(<a href="$prefix?m=$mode&q=$word" title="CPAN Search - $word">$word</a>);
}
sub cpan{cpan_search(@_)}

WWW::Mechanize

Summary

  LWP::UserAgentのサブクラス

https://で始まるSSL使用サイトに接続するには

  IO::Socket::SSLとCrypt::SSLeay,またはNet::SSLeayモジュールが必要.

Proxyを使用するには

$self->proxy(['http', 'ftp'], 'http://proxy.example.com:8000/');


  または,環境変数HTTP_PROXY,HTTPS_PROXYを設定しておけば,コンストラクタ内で
$self->env_proxy();

  が呼び出されるのでOK.

フォームフィールドの取得

  全てのフォームフィールドについて,フィールド名,タイプ,値を書き出すスクリプト
use WWW::Mechanize;
my $url = "http://www.example.com/form.html";
my $mech = WWW::Mechanize->new( cookie_jar => undef );
my $response = $mech->get( $url );
foreach my $form ($mech->forms) {
	foreach my $input ($form->inputs) {
		printf("%s (%s) ... %s\n", $input->name, $input->type, $input->value);
	}
}


"input 'fieldname' is readonly" のエラー

  hiddenフィールドの値を変更しようとした場合のWarning
  hiddenフィールドの値を変更するならWarningをOffにしてから.
{
	local $^W = 0;
	$agent->field( name => $value );
}


Reference

WWW-Mechanize

  Walrus, Digit. - Perlモジュール/WWW::Mechanize
  http://digit.que.ne.jp/work/?Perl%A5%E2%A5%B8%A5%E5%A1%BC%A5%EB%2FWWW%3A%3AMechanize

  Perldoc.jp - Modules - WWW-Mechanize
  http://perldoc.jp/docs/modules/WWW-Mechanize-1.02/

Perl で MSN Messenger

MSN.pm

  MSN MessengerをPerlから操作するためのモジュール
  Bot-Depot - MSN Protocol modules - MSN.pm
  http://www.bot-depot.com/forums/?showforum=12
#!/usr/bin/perl

use MSN;
use Jcode;

my $msn = MSN->new(Handle => 'hoge@hotmail.com', Password => 'hogepass');
$msn->set_handler(Message   => \&on_message);
$msn->connect();

while(1) {
	$msn->do_one_loop();
}

sub on_message {
	my ($self, $email, $name, $msg) = @_;
	my $utf8_name = Jcode->new($name, 'utf8')->euc;
	my $str = Jcode->new($msg, 'utf8')->euc;

	# $str を処理...

	my $utf8_str = Jcode->new($str, 'euc')->utf8;
	$self->sendmsg($utf8_str);
}


Net::Msmgr

Net-Msmgr
  http://search.cpan.org/~slstat/Net-Msmgr/
  - Install

# perl -MCPAN -e 'install Net::Msmgr'


Net::MSN

Net-MSN
  http://search.cpan.org/~djr/Net-MSN/
  - Install

# perl -MCPAN -e 'install Hash::Merge'
# perl -MCPAN -e 'install Net::MSN'


Reference

  Bot-Depot
  http://www.bot-depot.com/
  cubic9.com - Linux/Perl/MSN.pm
  http://cubic9.com/Devel/Perl/MSN.pm%20%28Bot-Depot%20realesed%29/

Image::Magickの使用法

サムネイルを生成

  Transformは,同じ比率で画像を縮小拡大する
#!/usr/bin/perl

use Image::Magick;

# 新しい幅だけ指定する
$newwidth = 120;

$i = Image::Magick->new;
$i->Read('input.gif');

# Transformは同じ比率で画像を縮小拡大する
$i = $i->Transform(geometry=>$newwidth);

print "Content-type: image/gif\n\n";
binmode(STDOUT);
$i->Write("gif:-");

exit;


幅と高さを指定して,GIFファイルをJPEGに変換する

  Scaleは,縦横のピクセルを与え縮小拡大する
#!/usr/bin/perl

use Image::Magick;

$newwidth  = 160;
$newheight = 160;

$i = Image::Magick->new;
$i->Read('input.gif');

# Scaleは縦横のピクセルを与え縮小拡大する
$i->Scale(geometry=>geometry,width=>$newwidth,height=>$newheight);

print "Content-type: image/gif\n\n";
binmode(STDOUT);

# JPEGで出力
$i->Write("jpeg:-");
exit;


枠の追加

width 枠の幅
height 枠の高さ
inner 内枠の幅
outer 外枠の幅
#!/usr/bin/perl

use Image::Magick;

$infile = "input.jpg";

$i = Image::Magick->new;
$i->Read($infile);

# 枠の幅がwidth,枠の高さがheight,内枠の幅がinner,外枠の幅がouter
$i->Frame(geometry=>geometry,width=>6,height=>6,inner=>2,outer=>2,color=>'#50FF50');
print "Content-type: image/gif\n\n";
binmode(STDOUT);
$i->Write("jpeg:-");
exit;


画像の回転

degrees 回転の角度 (-360〜360)
crop 1を指定すると元の画像の大きさを変えない
sharpen 1を指定すると,シャープフィルタを付加する
#!/usr/bin/perl

use Image::Magick;

$infile = "input.jpg";

$i = Image::Magick->new;
$i->Read($infile);
$i->Set(bordercolor=>'#FFFFFF');
$i->Rotate(degrees=>-30,crop=>0,sharpen=>1);
$i->Trim();
print "Content-type: image/gif\n\n";
binmode(STDOUT);
$i->Write("jpeg:-");
exit;


Reference

  ImageMagick.org
  http://www.imagemagick.org/
  ImageMagic(PerlMagic)
  http://www.tryhp.net/homeserver16.htm

モジュールの一括バージョンアップ & インストール

古くなっているモジュールの一覧

$ perl -MCPAN -e 'CPAN::Shell->r'


古くなっているモジュールを一括してバージョンアップ

# perl -MCPAN -e 'CPAN::Shell->install(CPAN::Shell->r)'


他の環境にインストールされているモジュールを一括してインストール

  例えばperl本体をバージョンアップしたときはこんな感じで。

# perl-5.6 -MCPAN -e autobundle
# perl-5.8 -MCPAN -e 'install Bundle::Snapshot_2004_06_16_00'


Reference

  はてなダイアリー - (ひ)のメモ - 2004-06-18
  http://d.hatena.ne.jp/hirose31/20040618#1087530672

via

  cl.pocari.org - 2004-09-06
  http://cl.pocari.org/2004-09.php#2004-09-06-13

SOAPの簡単な使用例

Reference

  河馬屋二千年堂's Page - Perlの小技 - SOAP::Liteモジュール
  http://homepage3.nifty.com/hippo2000/perltips/SOAP/Lite.htm
  [PHP-users 9699] SOAPによる実装
  http://ns1.php.gr.jp/pipermail/php-users/2002-September/009705.html
  [PHP-users 9741] Re: SOAPによる実装
  http://ns1.php.gr.jp/pipermail/php-users/2002-September/009747.html