2004-05-29 Sat
Perl表技集
- Reference
Perl表技集
http://www2u.biglobe.ne.jp/~MAS/perl/waza/menu.html
- via
cl.pocari.org - 2004-05-29
http://cl.pocari.org/2004-05.php#2004-05-29-2
2004-04-16 Fri
バッドノウハウカンファレンス2004
- 行く予定
2004-05-14 18:30 - 21:00
国立オリンピック記念青少年総合センター センター棟 403室
- Reference
Shibuya Perl Mongers
http://shibuya.pm.org/blosxom/techtalks/bkcon.html
2004-01-19 Mon
Encode::Guess モジュールを使用した文字コードの自動判定
- Reference
Perl-5.8 MEMO - 文字コードの自動判定
http://www.namazu.org/~tsuchiya/perl/perl-5.8.html#encode
perl5.8のUnicodeサポート
http://www.lr.pi.titech.ac.jp/~abekawa/perl/perl_unicode.html
- via
cl.pocari.org - 2004-01-17
http://cl.pocari.org/2004-01.php#2004-01-17-3
2004-01-10 Sat
曜日を算出するには
- Summary
ツェラーの公式を利用する
- サンプルソース 2000年1月1日の曜日を算出する
$y = 2000; $m = 1; $d = 1; # 1月は13月,2月は14月とみなす if ($m < 3) { --$y; $m+=12; } $w = ($y + int($y/4) - int($y / 100) + int($y/400) + int((13 * $m + 8) / 5) + $d) % 7; print "\$w = $w\n"; # $w=6 つまり土曜日で正解です
- Reference
とほほのWWW入門 - ラウンジ - 2000年01月 - perlで曜日を算出するには
http://tohoho.wakusei.ne.jp/lng/200001/00010015.htm
2004-01-09 Fri
Shibuya Perl Mongers 1周年記念テクニカルトーク 発表資料
- Summary
Shibuya Perl Mongers 1周年記念テクニカルトークで発表された資料が閲覧できる!
行きたかったイベントだけに嬉しい限り.
- Reference
Shibuya Perl Mongers : 1周年記念テクニカルトーク 発表資料とレビューリンク集
http://shibuya.pm.org/blosxom/techtalks/techtalks_200310_slides_and_reviews.html
2003-11-28 Fri
DBD/DBI モジュール と Data-ShowTable
- インストール
# aptitude install libdbd-mysql-perl libdata-showtable-perl
- 使用法
use DBI; $db = DBI->connect('DBI:mysql:データベース名:サーバ名', ユーザー名, パスワード); $sth = $db->prepare("SQL文"); $sth->execute; $num_rows = $sth->rows; print "該当 $num_rows 件\n"; for ($i = 0; $i < $num_rows; $i++) { @a = $sth->fetchrow_array; print "id=$a[0], name=$a[1] memo=$a[2] \n"; } $sth->finish; $db->disconnect;
- Reference
@IT - Linux Square - 快速MySQLでデータベースアプリ! - 第4回 PerlでMySQL操作CGIを作ろう
http://www.atmarkit.co.jp/flinux/rensai/mysql04/mysql04a.html
2003-09-25 Thu
変数に値が設定されていなかったら値を設定する
- 問題例
$name が設定されていなかったら $name='nobodyさん';
- 解答例1
$name ||= 'nobodyさん';
ただし $name = 0; のときも $name = 'nobodyさん'; となってしまう罠
- 解答例2
$name = 'nobodyさん' unless defined $name;
- 自分なら
if (!(defined $name)){ $name = 'nobodyさん'; }
- 結局 好みみたい.
- 参考
2ch - WebProg板 - Perl コーディング初心者質問コーナー Part28 - 326
http://pc2.2ch.net/test/read.cgi/php/1063562491/326
2ch - WebProg板 - Perl コーディング初心者質問コーナー Part28 - 335
http://pc2.2ch.net/test/read.cgi/php/1063562491/335
2003-09-23 Tue
Perl MSN Messenger Client
- Regerence
AdamJen.com: Perl MSN Messenger Client
http://www.adamswann.com/library/2002/msn-perl/
よろずや - EmacsでMSN Messenger
http://www.geocities.co.jp/SiliconValley-SanJose/7474/EmacsLisp.html#messenger
- via
たつをのChangeLog - 2003-09-04
http://chalow.net/2003-09-04.html#2003-09-04-1
2003-09-23 Tue
Shibuya Perl Mongers 1周年記念テクニカルトーク
- 今日締め切られた
もう少し気づくのが早ければ.
- Reference
http://shibuya.pm.org/blosxom/techtalks/techtalks_200310.html
2003-09-23 Tue
Shibuya Perl Mongers
- Summary
Shibuya Perl Mongers は東京地区とくに渋谷周辺のインターネット関連企業に勤務している Perl ユーザのコミュニティ形成を目指す非営利の団体
- 主な活動内容
プログラミング言語 Perl に関係するメンバー主催の勉強会やインターネット上での啓蒙活動や情報交換
- Reference
Shibuya Perl Mongers
http://shibuya.pm.org/
2003-09-16 Tue
Jcode.pm についてのドキュメント
- 公式ページ
http://openlab.ring.gr.jp/Jcode/index-j.html
- Reference
Wiki Fan - Jcode.pm
http://www2u.biglobe.ne.jp/~fsasaki/WikiFan/wiki.cgi?Perl%a5%e2%a5%b8%a5%e5%a1%bc%a5%eb%2fJcode%2epm
2003-08-14 Thu
CDDB モジュール
- フォーマット
最後の 2 文字はトラック数 (0209d901 -> 1 枚の CD に 1 曲のみ)
真中の 4 文字全体の時間 (bb11de62 -> 4574 秒)
最初の 2 文字はチェックサム
- CDDB の検索の仕組
曲数と各曲の演奏時間をキーとして検索
- Reference
CDDB
たつをのChangeLog - 2003-08-11
http://chalow.net/2003-08-11-2.html
2003-02-22 Sat
MeCab の Perl モジュールの使用例
- 例
#!/usr/bin/env perl use MeCab; my $sentence = "太郎はこの本を二郎を見た女性に渡した."; my @arg = ($0, "オプション"); my $c = new MeCab::Tagger (\@arg); my $result = $c->parse($sentence); print $result; exit;
- 元の形態素と読みだけ出力したい場合 (元の形態素\t読み\n)
my @arg = ($0, qq(-F%m\t%f[7]\n));
- オプション参考
http://cl.aist-nara.ac.jp/~taku-ku/software/mecab/format.html
2003-01-30 Thu
CPAN を利用して Perl モジュールを楽してインストールしたい
- 初期設定
# perl -MCPAN -e shell
Are you ready for manual configuration? [yes]
Mirror サーバを選択するところ以外は ほとんど Return でOK
- Perl モジュールインストール方法
# perl -MCPAN -e shell
cpan> install モジュール名
- Reference
ITMedia デベロッパー - Linux Tips - Perlモジュールを楽してインストールしたい
http://www.itmedia.co.jp/help/tips/linux/l0495.html
2003-01-22 Wed
Perlメモ
- Summary
やりたい事から逆引きできる.正規表現雑技が物凄い.
- http URIの正規表現
q{\b(?:https?|shttp)://(?:(?:[-_.!~*'()a-zA-Z0-9;:&=+$,]|%[0-9A-Fa-f} . q{][0-9A-Fa-f])*@)?(?:(?:[a-zA-Z0-9](?:[-a-zA-Z0-9]*[a-zA-Z0-9])?\.)} . q{*[a-zA-Z](?:[-a-zA-Z0-9]*[a-zA-Z0-9])?\.?|[0-9]+\.[0-9]+\.[0-9]+\.} . q{[0-9]+)(?::[0-9]*)?(?:/(?:[-_.!~*'()a-zA-Z0-9:@&=+$,]|%[0-9A-Fa-f]} . q{[0-9A-Fa-f])*(?:;(?:[-_.!~*'()a-zA-Z0-9:@&=+$,]|%[0-9A-Fa-f][0-9A-} . q{Fa-f])*)*(?:/(?:[-_.!~*'()a-zA-Z0-9:@&=+$,]|%[0-9A-Fa-f][0-9A-Fa-f} . q{])*(?:;(?:[-_.!~*'()a-zA-Z0-9:@&=+$,]|%[0-9A-Fa-f][0-9A-Fa-f])*)*)} . q{*)?(?:\?(?:[-_.!~*'()a-zA-Z0-9;/?:@&=+$,]|%[0-9A-Fa-f][0-9A-Fa-f])} . q{*)?(?:#(?:[-_.!~*'()a-zA-Z0-9;/?:@&=+$,]|%[0-9A-Fa-f][0-9A-Fa-f])*} . q{)?};
- 正確でないが簡単なhttp URIの正規表現
s?https?://[-_.!~*'()a-zA-Z0-9;/?:@&=+$,%#]+
- CSV形式の $line から値を取り出して @values に入れる
(値1,値2,"値3,値3","値4""値4" → 値1 値2 値3,値3 値4"値4)
{ my $tmp = $line; $tmp =~ s/(?:\x0D\x0A|[\x0D\x0A])?$/,/; @values = map {/^"(.*)"$/ ? scalar($_ = $1, s/""/"/g, $_) : $_} ($tmp =~ /("[^"]*(?:""[^"]*)*"|[^,]*),/g); }
- 配列 @array から重複した要素を取り除く
{ my %count; @array = grep(!$count{$_}++, @array); }
- 特定の項目でソートする (第 1項でソートし,さらに第 2項で降順ソートする)
@data = ('A,7,緑', 'C,6,青', 'B,4,赤', 'A,9,紫', 'A,2,黄緑', 'B,10,黄', 'C,3,青紫'); @data = map {$_->[0]} sort {$a->[1] cmp $b->[1] or $b->[2] <=> $a->[2]} map {[$_, split /,/]} @data;
- ソート後のデータ
@data = ('A,9,紫', 'A,7,緑', 'A,2,黄緑', 'B,10,黄', 'B,4,赤', 'C,6,青', 'C,3,青紫');
- Reference
大崎 博基 - Perlメモ
http://www.din.or.jp/~ohzaki/perl.htm
2003-01-20 Mon
Getopt::Long の使用法
- Getopt:Long とは
伝統的なものや GNU や POSIX の getopt() 関数のよりよい機能性をインプリメントするもの.
Getopt::Std は 1 文字しかオプションの文字が取れない.
Getopt::Long は `-' や `--' , `+' で始まる 1 文字以上のオプションが取れる.
- 具体的な使用法
my %options = ( help => 0); $ret = GetOptions(\%options,\$pattern,'help|h'); if ($options{help}){ &usage(); }
- 配列に入れたい場合
最後に `@' を入れる
ex)
$ret = GetOptions('file|f=s@',\@filelist);
--file /where/foo --file /where/var というオプションで
@filelist =['/where/foo','/where/var']; と同じ
- 引数指定子
| 引数指定子 | 引数 | 引数の省略 | 引数省略時の値 | 備考 |
| <無し> | 無 | --- | --- | オプションが指定されると,リンク先の変数が 1 になる. |
| ! | 無 | --- | --- | 前に`no' を付けると否定できる.ex) --nosize とか |
| =s | 文字列 | 省略不可 | --- | 文字列の先頭が-または--で始まっていてもオプションとはみなされない. |
| :s | 文字列 | 省略可能 | '' | 文字列の先頭が-または--で始まっている場合は次のオプションとみなされる. |
| =i | 整数 | 省略不可 | --- | 負の値を示すために引数の先頭に-をつけることができる. |
| :i | 整数 | 省略可能 | 0 | 負の値を示すために引数の先頭に-をつけることができる. |
| =f | 実数 | 省略不可 | --- | 負の値を示すために引数の先頭に-をつけることができる. |
| :f | 実数 | 省略可能 | 0 | 負の値を示すために引数の先頭に-をつけることができる. |
%options の中にはデフォルト値を入れておく.
$options{help} で値が取れる.
- Reference
Perl_man Getopt.3pm
http://www.att.or.jp/perl/man/getopt.3pm.html
2003-01-11 Sat
正規表現で変数を用いる際の注意点
- 問題点
$hoge = 'hoge' という変数があった場合
huga を ahogea と置換するために
s/huga/a$hogea/;
とやっても,$hogeaという変数と解釈してしまう.
s/huga/a($hoge)a/;
とやっても,a(hoge)aとなってしまう.
- 解決法
s/huga/a${hoge}a/;
${変数名} は Perl だけでなく,Shellスクリプトなどでも応用が利くらしい.