Perl(パール)

Perl(パール)とは、Larry Wall氏によって開発された、テキストの検索や抽出やレポート作成に適した、C言語に似た表記法のスクリプトプログラミング言語で、テキスト処理に優れていることから、CGIとしてWebアプリケーションの作成に使用されることが多い。

Perlに関する主なサイト

Japanized Perl Resources Project
Perlの日本語リソースの収集と文書を日本語訳するプロジェクト。perldoc.jp

CPAN.jp
perl日本語ドキュメント全文検索。

Tokyo Perl Mongers
東京地区のPerlユーザーのコミュニティー(メーリングリスト)。

Jcodeを使おう(実用本位のJcode紹介)
文字コード判別、変換のための日本語文字コード用汎用モジュール、Jcode.pmの解説。

futomi's CGI Cafe
PerlスクリプトのCGIを作成する際に役立つ情報を掲載。

Perlリファレンス
Perlのリファレンスを掲載しているサイト。

ActiveState
Windows上で動作するフリーのPerlパッケージ「Active Perl」を配布しているサイト(英語)。

Perl 書籍
Perlの入門書や解説書。

Perlベストプラクティス
著者:Damian Conway
価格:4,515円
オライリー・ジャパン

by Amalink
[129] Posted by kagahiro at 2005/05/10 06:44:08
オープン | 6 point | Link (16) | Trackback (0) | Comment (6)

キーワード
perl プログラミング オープンソース CGI 

kagahiroのホームページ


Perl(パール) 関連リンク

生みの親が語るPerlの生い立ちと今後
CNET Japanに3月29日から30日にかけて開催された「YAPC::Asia 2006」のスピーカーとして来日した、perlの生...
Perl 書籍
初めてのperlperlの各種機能や言語仕様の基礎をていねいに解説した入門書。正規表現の解説の拡充など、perl...
Perlのウェブアプリケーションフレームワーク
Ruby のウェブアプリケーションフレームワークとしては、Ruby on Rails が有名ですが、思うところがあって、...
オープンソースソフト
オープンソースソフトとは、そのソフトのプログラムが一般に公開されているソフトウェアのことで、利用者はプログラムを自由にコピーしたり、...
CGI
CGIとはCommon Gateway Interface の略で、Webサーバーがプログラムを起動する方法(環境変数の名前や値)を定めた仕様。
Linux
Linux(リナックス)とは、フィンランド人のリーナス・トーパルズ氏によって開発された、自由に改変や再配布が可能なオープンソースのUnix...
FreeBSD
BSDライセンスというライセンス体系に基づいて公開されている、UNIXに似たオープンソースのオペレーティングシステム...
PostgreSQL
PostgreSQLとは、オープンソースの本格的なRDBMSで、問い合わせ言語としてSQLが使えるほか、トランザクション、行レベルロック、副問い合わせなど...
Apache
Apache(アパッチ)とは、世界一のシェアを誇るオープンソースのWebサーバ用ソフトウェア。NCSAにソフトウェアパッチ...
PHP
PHPとは、プログラム言語の一種で、HTMLファイル内に記述することで、サーバーサイドで動作するWEBアプリケーションを効率的に開発できる...
Active Perl に Jcode.pm をインストールする方法
Windows にインストールしたActive perlにJcode.pmをインストールする方法も基本的にはUNIX環境へのインスト...
かなとローマ字をシンプルに相互変換するPerlモジュール
パールモンガーにしてアルファブロガーのダン・コガイ氏が、かなとローマ字をシンプルに相互変換するperlモ...
テキスト中のキーワードをリンクするPerlサンプルスクリプト
任意のキーワードリストに含まれるテキスト中のキーワードに、特定のページ(URL)にリンクするperlのサンプル...
Perlベストプラクティス Damian Conway 著
perlで見やすく堅牢な実用的なコードを作成するには具体的にどうすれば良いのか、著者の22年間のプログラミング経験にもとづいて、レイアウト、名前の選択、データ構造と制御構造の選択、プログラムの分解、インタフ...
[Perl]http URL の正規表現について
コメント内のURLを自動的にリンクする処理の正規表現が、よく見るとかなり怪しかったの少し調べてみたのですが、それほど正確でなくてもいいと言うのであれば、s?https?:\/\/[-_.!~*'()a-zA-Z0-9;\/?:\@&=+\$,%#]+で...
Perl.com
perl.comは、perlのホームページ。ソースコード、各種OS別のperlの実装、マニュアル、モジュール、バグレポート、perlのFAQ集などがある。perl.com Home Pageperl-FAQ Part0J(日本語訳)

Perl(パール) トラックバック

トラックバックURL :


Perl(パール)へのコメント

1 Posted by nisi at 2005/04/09 09:14:59
現在 メール送信はできるのですが、subject が表示できず、困っています。
多分、mimewでエンコードすべきだと思い
このように作成しましたが、だめです。


$$$$$$$$$$$$$$$$$$$$$$$

#!/usr/bin/perl

#setting
use CGI qw(:standard);
require 'jcode.pl';
require 'mimew.pl';
#####これがないと引数が渡りません。
if ($ENV{'REQUEST_METHOD'} eq "POST"){
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
}else{
$buffer = $ENV{'QUERY_STRING'};
}
foreach(split(/&/, $buffer)){
($name, $value) = split(/=/, $_);
$value =~ tr/+/ /;
$value =~ s/%(..)/pack("C",hex($1))/eg;
&jcode'convert(*value,'euc');
$param{$name} = $value;
}

#フォームデータを得る

$log_ipanname = $param{'log_ipanname'};
$log_ipanzip = $param{'log_ipanzip'};
$log_ipanaddress = $param{'log_ipanaddress'};
$log_ipanaddress2 = $param{'log_ipanaddress2'};
$log_ipantel = $param{'log_ipantel'};
$log_ipanemail = $param{'log_ipanemail'};
$flagipan = $param{'flagipan'};
$flagsansei = $param{'flagsansei'};
$sougoukei = $param{'sougoukei'};



####################################################################
#一般客あてメール
$name = $name;

###かごの中身も提示したい
#一般客用メールの件名
$subject_a = 'ショッピングサイトのご注文確認';


$address = $log_ipanemail;
$body1 = $log_ipanzip;
$body2 = $log_ipanaddress;
$body3 = $log_ipanaddress2;
$body4 = $log_ipantel;
$body5 = $sougoukei;
$body6 = $**ipanemail;
$body7 = '****@s***.ocn.ne.jp';



#一般客送信先メールアドレス
$toaddr = "$body6 ";
$fromaddr = "$body7";
#一般客用 文字変換
#process before send
$mailName = jcode::jis($name);
$mailBody1 = jcode::jis($body1);
$mailBody2 = jcode::jis($body2);
$mailBody3 = jcode::jis($body3);
$mailBody4 = jcode::jis($body4);
$mailBody5 = jcode::jis($body5);
$mailBody6 = jcode::jis($body6);
$mailBody7 = jcode::jis($body7);

$encodedSubject_a = &mimeencode($Subject_a);

#一般客用 送信メール作成
open(MAIL,"| /usr/sbin/sendmail -t -f $toaddr ");
print MAIL "To: $mailBody6\n";
print MAIL "From: $mailBody7\n";
print MAIL "encodedSubject_a: $encodedSubject_a\n";
print MAIL "Content-Type: text/plain\n\n";
print MAIL "$mailName様 ご注文内容は以下の通りです。なおこのメールに記載されているようなお買い物に心辺りのない場合は、直ちにご返信くださいますようお願い申し上げます。\n";
print MAIL "*************************************************\n";
print MAIL "配送情報とご請求金額\n";
print MAIL "*************************************************\n";
print MAIL "御名前: $mailName様\n";
print MAIL "e-mail: $mailBody6\n";
print MAIL "郵便番号:$mailBody1\n";
print MAIL "都道府県:$mailBody2\n";
print MAIL "御住所:$mailBody3\n";
print MAIL "電話番号:$mailBody4\n";
print MAIL "注文合計:$mailBody5円\n";
print MAIL "送料:一括800円 北海道、沖縄はプラス200円、離島などの追加料金は、お客様にてご負担ください\n";
print MAIL "なお注文品数が著しく多く宅急便の箱一つに収まらない場合などは追加料金をお支払いいただきます。\n";

print MAIL "*************************************************\n";
print MAIL "ご注文内容\n";
print MAIL "*************************************************\n";



print MAIL "*************************************************\n";
print MAIL "お振込み先\n";
print MAIL "*************************************************\n";
print MAIL "$mailName様、下記いずれかの方法にてお振込み下さいますようお願い申し上げます。\n";
print MAIL "入金確認後、ご注文品を発送させて頂きます。\n";
print MAIL "振込み先: ****銀行京都支店(当)*****口座名 *****\n";
print MAIL "振込み先: 郵便振替(郵便局)****-*-****** 口座名 *****\n";
close(MAIL);





################################################################
#管理人用メール


###かごの中身も提示したい
$subject_b= '店主宛発注確認メールです。';


$fromaddr = "$body6";
$toaddr ="$body7";

#一般客用 文字変換
#process before send

$encodedSubject_b = &mimeencode($Subject_b);

open(MAIL,"| /usr/sbin/sendmail -t -f $toaddr ");
print MAIL "To: $mailBody7\n";
print MAIL "from: $mailBody6\n";
print MAIL "encodedSubject_b: $encodedSubject_b\n";
print MAIL "Content-Type: text/plain\n\n";
print MAIL "$mailName(お客様)が発注されました。ご注文内容は以下の通りです確認をお願いします。\n";
print MAIL "*************************************************\n";
print MAIL "配送情報とご請求金額\n";
print MAIL "*************************************************\n";
print MAIL "御名前: $mailName様\n";
print MAIL "e-mail: $mailBody6\n";
print MAIL "郵便番号:$mailBody1\n";
print MAIL "都道府県:$mailBody2\n";
print MAIL "御住所:$mailBody3\n";
print MAIL "電話番号:$mailBody4\n";
print MAIL "注文合計:$mailBody5円\n";
print MAIL " $toaddr:toaddr送料:次のようにお客様に告知済み 一般の場合 送料を確認してください。一括800円 北海道、沖縄はプラス200円、離島などの追加料金は、お客様にてご負担ください\n";
print MAIL "なお注文品数が著しく多く宅急便の箱一つに収まらない場合などは追加料金をお支払いいただきます。\n";
print MAIL "送料:次のようにお客様に告知済み 三清会会員の場合 送料を確認してください。一括800円 北海道、沖縄はプラス200円、離島などの追加料金は、お客様にてご負担ください\n";
print MAIL "なお注文品数が著しく多く宅急便の箱一つに収まらない場合などは追加料金をお支払いいただきます。\n";

print MAIL "*************************************************\n";
print MAIL "ご注文内容\n";
print MAIL "*************************************************\n";

print MAIL "*************************************************\n";
print MAIL "お振込み先\n";
print MAIL "*************************************************\n";
print MAIL "次のようにお客様に告知済み 会員の場合$mailName様、下記いずれかの口座にお振込み下さいますようお願い申し上げます。\n";
print MAIL "又はお荷物の中に郵便振替用紙を入れさせて頂きます。お振込み下さい。\n";
print MAIL "振込み先: *******支店(当)**** 口座名 ***\n";
print MAIL "振込み先: 郵便振替(郵便局)**-*-*** 口座名 *****\n";
print MAIL "次のようにお客様に告知済み 一般客の場合$mailName様、下記いずれかの方法にてお振込み下さいますようお願い申し上げます。\n";
print MAIL "入金確認後、ご注文品を発送させて頂きます。\n";
print MAIL "振込み先: ***銀行***支店(当)**** 口座名 ****\n";
print MAIL "振込み先: 郵便振替(郵便局)***-*-**** 口座名 *****\n";
close(MAIL);



##display web上に表示
$limit = &get_expire(-1);
print<<EOF;
Set-Cookie: cookieokaimono=""; expires=$limit;
EOF
print"Content-type: text/html\n\n";
print"<html>\n";
print"<title>sendresult on the web</title>\n";
print"<body><table align=\"center\" width=\"400\" height=\"500\"><tr><td>\n";
print"<table border=\"3\" width=\"400\"><tr><td colspan=\"2\">お買い上げ有難うございました。<br>お買い物内容の確認のメールを送信致しました。<br>
30秒ほどで着信しない場合はメールアドレスの誤りが考えられます。<br>
もう一度メールアドレスの再記入をお願い致します。<br>
ブラウザの戻るで戻って下さい。<br></td></tr><tr><td width=\"200\" valign=\"bottom\"><form action=\"./index.cgi\" method=\"get\">
<font color=\"#800080\"><b><input type=\"submit\" value=\"topに戻る\"></form></td><td width=\"200\" valign=\"bottom\"><form action=\"http://www.****.com\" method=\"get\"><font color=\"#800080\"><b><input type=\"submit\" value=\"***HP\"></form></td></tr>\n"; <br></td></tr></table>\n";


print"</body></html>";
exit;


################################################################


##################################################################

########################################################################
sub get_expire{
local($days_later) = $_[0];
($sec,$min,$hour,$mday,$mon,$year,$wday) = gmtime(time + int($days_later*60*60*24));
$mon = ("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec")[$mon];
$wday = ('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday')[$wday];
return sprintf("%s, %02d-%s-%04d %02d:%02d:%02d GMT",$wday,$mday,$mon,$year+1900,$hour,$min,$sec);
}

2 Posted by kagahiro at 2005/04/10 14:56:25
$subject_a = 'ショッピングサイトのご注文確認';
ここと

$encodedSubject_a = &mimeencode($Subject_a);
ここの変数名が違ってるのが原因だと思います。

$subject_b も同様です。
3 Posted by nis at 2005/04/10 20:35:37
確かに
変数がちがっているとは、どういう意味なのか
わたしには解かりません。
ご教示下さい。
4 Posted by kagahiro at 2005/04/10 21:52:25
変数名の大文字と小文字は区別されるので、$subject_aと$Subject_aは別の変数として扱われます。
なので、$Subject_aにはなにも値が入ってない状態になり、subject が表示されないのだと思います。

$encodedSubject_a = &mimeencode($Subject_a);

$encodedSubject_a = &mimeencode($subject_a);
に修正すればいいと思います。
5 Posted by Nisi at 2005/04/11 15:37:02
ありがとうございました。思いこみとはおそらしい物です。
当該部分を訂正いたしました。
サブジェクトが文字化けをおこし
やはり、件名は、表示されません。
これはプログラムを初めから直すべきかと
途方にくれてしまいます。
JCODEで変換しているので、日本語は、変換されているはずが、メール上の本文枠に奇妙な文字の羅列としてFrom: ****@***.o**.**.jp
Subject: =?ISO-2022-JP?B?GyRCPi5Abk4uJTclZyVDJVQlcyUwJTUlJCVIJE4kNENtSjgzTkcnGyhC?=
Content-Type: text/plain
などと表示されてしまします。

できれば、ご教示ください。

もしかきなおすとすれば、 加賀様のように変数に、日本語のmessage部分を一括でいれて、変換をおこなう。というやり方でやろうと思います。
6 Posted by 無名のブロガー at 2005/04/18 13:29:08
いろいろ有難うございます。結局 変数をその場で変換していく方法で書き直しました。でも件名だけは表示されずじまいでした。結局、fromを一番下にいれると表示できました。でもなぜそうなのかは私にはわかりませんでした。
ありがとうございました。


詳細の入力フィールドを表示する

おすすめ  (チェックしてコメントすると最新情報に掲載)
コメント :

< 前の投稿      次の投稿 >

アクセスランキング

今日のアクセスランキング TOP 10

  1. ウェブページを1回だけリロード(再表示)する方法 (7 PV)
  2. [食べ物]七草粥(ななくさがゆ) (3 PV)
  3. 米空軍がICBM(大陸間弾道ミサイル)「ミニットマン3」の発射実験 (1 PV)
  4. [将棋]佐藤天彦名人対Ponanza(ポナンザ)の対局は相掛かりで先手のPonanzaが圧勝 #電王戦 (1 PV)
  5. [Perl]1バイト(8bit)の10進数を2進数の文字列に変換するコード (1 PV)
  6. [将棋]竜王戦第三局は居飛車振り飛車の対抗型で丸山忠久九段が勝利 #竜王戦 (1 PV)
  7. 2ちゃんねる(2ch.net)がdatへのアクセスを近日廃止、専用ブラウザの開発は許諾制に (1 PV)
  8. 世界最大のマストドンインスタンス「mstdn.jp」の管理者nullkal(ぬるかる)さんがドワンゴに入社 (1 PV)
  9. [将棋]角換わり▲4五桂速攻(△6五桂速攻) #佐藤天彦名人 #三浦弘行九段 (1 PV)
  10. USTREAM(ユーストリーム) 日本語版 無料のライブ映像配信サービス (1 PV)

今月のアクセスランキング TOP 10

  1. SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (4258 PV)
  2. [将棋]佐藤天彦名人対Ponanza(ポナンザ)の対局は相掛かりで先手のPonanzaが圧勝 #電王戦 (1366 PV)
  3. さくらインターネット、スタートアップスクリプト「Mastodon(マストドン)」をリリース (440 PV)
  4. 将棋ウォーズスーパープレミアムプラン販売開始、香川愛生女流三段のボイスが選択可能 #将棋 (438 PV)
  5. [将棋]竜王戦第三局は居飛車振り飛車の対抗型で丸山忠久九段が勝利 #竜王戦 (298 PV)
  6. ウェブページを1回だけリロード(再表示)する方法 (282 PV)
  7. フリーソフトウェア/オープンソースのタブー (262 PV)
  8. [食べ物]七草粥(ななくさがゆ) (259 PV)
  9. [将棋]中学生プロ棋士の藤井聡太四段がNHK杯1回戦で千田翔太六段に勝ちプロデビューから公式戦13連勝 (197 PV)
  10. [C言語]UTF-8でエンコードされた文字列の部分文字列を取り出すコード (184 PV)

アクセス統計

ディレクトリ

関連サイト