Summary
Perl と TeX を利用して年賀状を印刷する.Reference
MYCOM PC WEB - 今年の年賀状はフリーで行こう - Perl + TeXでこだわりの宛名印刷http://pcweb.mycom.co.jp/special/2004/nenga/
# aptitude install dh-make-perl
$ dh-make-perl --build --cpan Template::Extract
- インストール
# dpkg -i libtemplate-extract-perl
### 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(@_)}
$self->proxy(['http', 'ftp'], 'http://proxy.example.com:8000/');
$self->env_proxy();
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);
}
}
{
local $^W = 0;
$agent->field( name => $value );
}
#!/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);
}
# perl -MCPAN -e 'install Net::Msmgr'
# perl -MCPAN -e 'install Hash::Merge'
# perl -MCPAN -e 'install Net::MSN'
#!/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;
#!/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;
$ perl -MCPAN -e 'CPAN::Shell->r'
# perl -MCPAN -e 'CPAN::Shell->install(CPAN::Shell->r)'
# perl-5.6 -MCPAN -e autobundle
# perl-5.8 -MCPAN -e 'install Bundle::Snapshot_2004_06_16_00'