![]() Memo/Perlhttps://dexlab.net:443/pukiwiki/index.php?Memo/Perl |
Memo/Perl †
jcode.pl 2.13 で構文エラー †
構文チェック †perl -c example.pl 正規表現 †
正規表現で最短一致 †
cpanより便利なcpanm(cpanminus)を使う †
utf8メール送信 †#!/usr/bin/perl -w use strict; use utf8; use Encode::Guess qw/euc-jp shiftjis 7bit-jis/; use MIME::Base64; use Net::SMTP; our %EMAIL_OPTIONS = ( 'from' => 'from@example.com' # 送信元メールアドレス , 'to' => 'to@example.com' # 送信先メールアドレス , 'subject' => 'テスト' # 件名 , 'message' => "1行目\n2行目\n" # 本文 , 'smtp_host' => 'localhost' # smtp host(default:localhost) , 'smtp_port' => '25' # smtp port(default:25) ); send_mail_utf8(\%EMAIL_OPTIONS); # utf-8でメール送信 sub send_mail_utf8 { my $option = shift; # メールヘッダ my $mail_header = ''; # UTF-8とbase64エンコード $mail_header .= "MIME-Version: 1.0\n"; $mail_header .= "Content-type: text/plain; charset=UTF-8\n"; $mail_header .= "Content-Transfer-Encoding: base64\n"; # 送信元 $mail_header .= sprintf("From: %s\n", $option->{'from'}); # 宛名 $mail_header .= sprintf("To: %s\n", $option->{'to'}); # 件名をエンコード $mail_header .= 'Subject: ' . '=?utf-8?B?' . encode_base64($option->{'subject'}, '') . "?=\n"; # メールヘッダの終わり $mail_header .= "\n"; # SMTPでメールを送る。 my $SMTP=Net::SMTP->new( $option->{'smtp_host'} ,Port=>$option->{'smtp_port'} ); if (!$SMTP) { die "Error : Can not connect to mail server.\n"; } $SMTP->mail($option->{'from'}); $SMTP->to($option->{'to'}); $SMTP->data(); $SMTP->datasend($mail_header); $SMTP->datasend( encode_base64($option->{'message'}) ); $SMTP->dataend(); $SMTP->quit; } utf8対応 †
コマンドラインオプション †
複数行のコメントアウト †
CPANミラーサイトの選び方 †
CPANモジュールインストール時に自動でデフォルトを選択 †
$ cpan cpan> o conf prerequisites_policy follow cpan> o conf commit cpan> quit または echo -e "o conf prerequisites_policy follow\no conf commit\nquit\n" | perl -MCPAN -e shell CPANディレクトリを探す †
CPAN設定ファイル †
/usr/lib/perl5/5.8.8/CPAN/Config.pm -rw-r--r-- 1 root root 1344 Feb 24 2009 /usr/lib/perl5/5.8.8/CPAN/Config.pm コマンドライン電卓 †
CPANの再設定 †cpan> o conf init
自動インストール †yes '' | perl -MCPAN -e 'install MODULE_NAME' cpanコンソール †# perl -MCPAN -e shell バージョンを指定してインストール †最新バージョンだと不具合が出る場合等に。
インストール済みモジュール一覧 †
日本語HTMLマニュアルを作成する †
ワイルドカードを使う †以下の方法では、テキストファイルをカレントディレクトリとその1階層下から探し、@files変数に格納します。 my(@files) = grep { -f $_ } map { (-f $_) ? $_ : glob($_) } ("*.txt", "*/*.txt"); ファイルパスを分解する †use File::Specモジュールを使います。 use File::Spec; my($path) = "C:\\Program Files\\Microsoft Office\\OFFICE11\\EXCEL.EXE"; my($volume, $directories, $file) = File::Spec->splitpath( $path ); print "$volume, $directories, $file"; 結果: C:, \Program Files\Microsoft Office\OFFICE11\, EXCEL.EXE 複雑な変数の中身を表示する †Data::Dumperモジュールが便利です。 use Data::Dumper; Dumper(変数名へのリファレンス); Dumper(\$_); Dumper(\@_); Dumper(\%_); 省略 †
初期値 †
# 初期値 上書きするには our $VAR1 = "hoge"; unless( defined($VAR1) ) { our $VAR1 = 'init var'; } |
|