perl

2008-07-11

[perl] やる夫が改行を取り除くようです。

変数に代入された値の改行を取り除く

変数に、コマンド結果を入力したのですが、どうもうまく動かない・・・。中身をみると、改行が含まれていたようです。改行は下記のコードで取り除くことが可能です。

$yaruo =~ s/\n//;

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

2008-07-09

[perl] やる夫がテンプレートを利用したメール送信プログラムを作成したようです。

テンプレートを利用したメール送信サンプルプログラム

perl moduleをいくつか利用します。指定しないと下記のようなメッセージで起こられてしまいます。

Can't locate object method "new" via package

templateファイルと、本体プログラムが必要となります。ちなみにメールは送信できる環境のものとします。外のメールアドレスに送る場合は、外フィルタが開いていないとだめです。そんなに気にしなくてもよいと思いますが・・・。

       ____
     /      \
   /  _ノ  ヽ、_  \
  / o゚((●)) ((●))゚o \  ほんとはrubyとかjavaを書きたいんだお・・・
  |     (__人__)    |
  \     ` ⌒´     /

       ____
     /      \
   /  _ノ  ヽ、_  \
  /  o゚⌒   ⌒゚o  \  でもrubyは、リア充言語だから、やる夫には向いてないお
  |     (__人__)    |
  \     ` ⌒´     /

       ____
     /⌒  ⌒\
   /( ●)  (●)\
  /::::::⌒(__人__)⌒::::: \   だからperlでやるお!
  |     |r┬-|     |
  \      `ー'´     /

なんとなくですが、rubyとかjavaはリア充言語のような印象があります。今の会社に勤めてから、全くプログラムを書いていません。昔はマクロ一筋でしたが、それもしていない・・・。最近ちょっとだけperlを勉強し始めました。

プログラム

# vi mail.pl
-----
#!/usr/local/bin/perl
### module specification
use strict;
use MIME::Lite;
use Template;

### parameter
my @message = (
    {
        yaruo => 'yaruo mail',
        yaranaio => 'yaranaio mail',
    },
    {
        yaruo => 'test mail',
        yaranaio => 'test mail',
    }
);

### tempate set
my $template = Template->new;
my $output;

$template->process(
    'yaruo.txt',
    {message=>\@message},
    \$output,
);

### mail header
my $msg = MIME::Lite->new(
    Type     => 'multipart/alternative',
    Subject  => 'Subject test_mail',
    From     => 'hogehoge@neet.com',
    To       => 'yaruo@neet.com',
    Encoding => '8bit',
);

### html
$msg->attach(
    Type    => 'text/html; charset=\'utf-8\'',
    Data    => $output,
);

### text
$msg->attach(
    Type    => 'text/plain; charset=\'utf-8\'',
    Data    => 'please refer to the html mail.',
);

$msg->send();
-----

なるべくシンプルに作成したつもりです。カスタマイズするには、”### parameter”と”### mail header”箇所を変更すればよい感じだと思います。

テンプレートファイル

# vi yaruo.txt
-----
<html>
<body>
[% FOREACH p = message -%]

<font color="#FFFF00">[% p.yaruo %]</font>
<font color="#FF0000">[% p.yaranaio %]</font>

[% END -%]
</body>
</html>
-----

プログラム実行

# ./mail.pl

特にメッセージなし、問題なければ指定したアドレスにメールが送信されている筈。こんなhtmlメールが届く。

Html

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

2008-07-07

[perl] やる夫が数値判定するプログラムを組んだようです。

perlで数値判定プログラム

内容としては、あるlistファイルを1行づつ読み、その値が数値(少数点も含む)であるかを判定します。

# vi yaruo.pl
-----
#!/usr/local/bin/perl
open(IN, "yaruo.list");
while ($_ = <IN>) {
    if($_ =~/^(-|\+|)\d+\.?\d*(E\+\d+|E\-\d+)?$/i){
        print "$_ \n";
    }
}
close(IN);
-----

yaruo.listをオープンし、数値だったら標準出力に結果を表示する内容となっています。

# cat yaruo.list
123
1245
21.212
やる夫
やらない夫
12

ファイルの中身はこんな感じです。ではyaruo.plを動かしてみましょう。

# ./yaruo.pl
123
1245
21.212
12

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