perl

perl-5.14で IO::Prompt::promptが失敗するケース

$ARGVの扱いかが変わったことが原因らしい。 package mainで動かす分には問題ないですが、他パッケージで利用していて Perlのバージョンアップを行う場合は注意が必要です。 Failed IO::Prompt::prompt in Perl-5.14 · GitHub バグレポートが積み重なってい…

重複しない乱数の生成

Perlで乱数生成 - ハブ君の寝言 を見て、昔自分もそんな感じで書いてたなぁと思い出しつつ、 今の知識で書いてみました。 手法1 0から nまでの配列を生成 0から nまでの乱数を生成 (2)で得られた indexと配列の最後の要素を交換 n = n-1とし, (2)に戻る. こ…

Parse::RecDescentを使って .iniファイルのパーサを書く

Parse::RecDescentを一回ぐらい使っておこうかなということで使ってみた。 書いてみたのは .iniファイルのパーサです。たくさんモジュールがあるし、 実際に使う気があるわけでもなく、ただ練習ということで。 iniの仕様 書くにあたってわかったのですが、.i…

Text::ASCIITableを 2文字幅の文字に対応させる

Text::ASCIITableがmulti-width charactersに対応していないようですよ!腕に覚えのあるPerl Mongerにおかれましてはパッチを書いてみてはいかがでしょうか!!2011-06-11 18:46:31 via Tween このようにText::ASCIITableはデフォルトでは半角文字だけで日本…

Perlで NTPを使う

Net::NTPというモジュールがあったので使ってみた。 なんか名前的にデフォルトで入ってそうと思ったけど、 デフォルトでは入ってないですね。 コード get_ntp_response()のみを提供するモジュールです。 #!perl use strict; use warnings; use Net::NTP (); …

Perlでシンプルなカレンダを作成

Calendar::Simpleと Text::ASCIITableを使って書いてみた。。 プログラム #!/usr/bin/env perl use strict; use warnings; use Calendar::Simple; use Text::ASCIITable; my ($this_mon, $this_year) = (localtime)[4,5]; my $month = shift || ($this_mon +…

Data::Printerを使ってみた。

The Onion Stand: Data::Printer - a colored pretty printer for Perlで紹介されている Data::Printerというのを使ってみた。 例のままですが、一応。 インストール 依存モジュールはそこそこですかね。 % cpanm Data::Printer 使う とりあえずは pメソッド…

GlitchIMEの Perl版

勉強のために書いてみた。APIは同じにしてます。 実装もほとんど同じです。 元ネタ GoogleのAPIで仮名漢字変換するGem - ミニマリストhitode909の日記 デベロッパーガイド Google 日本語入力 - CGI API デベロッパーガイド リポジトリ syohex/p5-App-GlitchI…

Capture::Tinyを使う

標準出力、標準エラー出力への書き込みを別々に 取得したい場合に便利に使えます。 ソース #!/usr/bin/env perl use strict; use warnings; use Capture::Tiny qw(capture); my ($stdout, $stderr) = capture { warn "message to STDERR"; print "message to…

画像回転 Webアプリ

Webアプリというものがよくわかっていないのと Plackを使ってみたいという ので、作ってみた。少し知識が広がった気がした. コード #!/usr/bin/env perl use strict; use warnings; use utf8; use Encode; use File::Temp; use Plack; use Plack::Builder; u…

半角カナ混じりの文字幅を数える

文字幅ってどうやって調べるんだろって思って、 使えるモジュールを探してみた。 #!/usr/bin/env perl use strict; use warnings; use utf8; my $str = "リンゴゴリラ"; { use Unicode::Japanese; printf "[%s] length = %d\n", 'Unicode::Japanese', Unicode::J…

JavaScript::Packerを用いたJavaScriptの圧縮

JavaScriptのサイズを減少させるためのモジュール JavaScript::Packerの例。 #!/usr/bin/env perl use strict; use warnings; use autodie; use JavaScript::Packer; my $js = shift; open my $fh, "<", $js; my $js_code = do { local $/; <$fh>; }; close …

blockdiagを使って, コールフローを作成する

http://blockdiag.com/blockdiag-ja/build/html/index.htmlを見て、なにかできないだろうかって考えてみて、cflowの結果から コールフローが作れるなって思って、コードを書いてみた。 準備 cflow, blockdiagをインストールします % sudo aptitude install c…

HTML::TagCloudのサンプル

へぇこんなんのあるんだって思ったらかなり古くあるものだった。 どんなんか知るために、サンプルを書いてみる。 参考 http://search.cpan.org/~robertsd/HTML-TagCloud-0.36/lib/HTML/TagCloud.pm ソース DMMから女優ランキングを取得し、それをタグクラウ…

HTTP::Tinyを使う

Perl 5.14.0が出ました。気になるものとして、新しい標準モジュールに入った HTTP::Tinyがあります。cpanmも使っているモジュールです。 標準モジュールで HTTPクライアントが簡単にかけると、助かる場面と いうのは多いのではないでしょうか。 perl5.14.0 J…

Macで Clipboardを utf-8で使う。

Clipboardモジュールは OS間のクリップボードの違いを埋めてくれるもの なのですが、Macの場合、MacJapanese(Shift_jis + Apple拡張)で encodeしないと ちゃんと日本語が扱えないというのがあって、それだと Linux向けに書いた utf-8の コードをそのまま持っ…

PSプリンタで印刷するためのスクリプト

会社で GUI経由だと印刷できないんだけど、コマンドライン経由だと 印刷できることが最近分かりました。でも lp、 lprってオプションが 覚えられないのでそのためのユーティリティ。両面印刷と集約印刷、プリント枚数ぐらいしかいじらないのでそれのみの対応…

環境変数を設定する elispの生成

Emacsにシェルで使っている環境変数を設定したい。 主に perlbrew関連なんですけど。シェルから Emacsを起動したらそれで 解決なんですけど、どうもシェルから起動すると意味もないのに ミニバッファにフォーカスが移るということが多発しました。 なので 環…

Twitterやってる AV女優を調べる

ブログ以外にもTwitterやってる人も多いよね、ということでコードを書いた。 情報を集めさせていただいたサイトでは onclick経由で該当のサイトに飛ぶんだけど、 Web::Scraperの場合 'onclick'であっても, 'onClick'と書かないといけませんでした。 注意はそ…

Perlで学ぶ「詳解 UNIXプログラミング」(その8) 第8章 プロセス制御

はじめに 「詳解 UNIXプログラミング」の第八章を示します。 本家 http://d.hatena.ne.jp/atsuoishimoto/20110324/1300933805 8.1 fork関数の例 forkでは親プロセスと子プロセスのメモリ空間が異なるため グローバル変数も共有しません。これはマルチスレッ…

Perlで学ぶ「詳解 UNIXプログラミング」(その9) 第9章 プロセスの関係

はじめに 「詳解 UNIXプログラミング」の第九章を示します。 9.1 オーファンドプロセスグループの作成 オーファンドとは親のいない状態という意味のようです。 #!/usr/bin/env perl use strict; use warnings; use POSIX; # オーファンドプロセスグループの…

「CPANモジュールガイド」感想

CPANモジュールガイドを読了しました. 個人的には Encodeの説明に載っていた Perlの"文字列"とバイト列の説明は とてもよかったです。理解が中途半端だったんですけど、おかげで理解できました。 中級者はより理解を深めるために、初心者はこんなことできる…

Perlで学ぶ「詳解 UNIXプログラミング」(その7) 第7章 プロセスの環境

はじめに 「詳解 UNIXプログラミング」の第七章を示します。 本家 http://d.hatena.ne.jp/atsuoishimoto/20110322/1300757335 7.1 終了ハンドラの例 Perlには atexitはなく、ENDブロックを使います。 #!/usr/bin/env perl use strict; use warnings; # 終了…

Perlで学ぶ「詳解 UNIXプログラミング」(その6) 第6章 システムデータファイルと情報

はじめに 「詳解 UNIXプログラミング」の第六章を示します。 本家 http://d.hatena.ne.jp/atsuoishimoto/20110318/1300407363 6.1 getpwnam関数 getpwnamは/etc/passwdの内容を取得する関数なのですが、 Perlでの仕様がよくわからない。普通は 7つしかフィー…

Perlで学ぶ「詳解 UNIXプログラミング」(その5) 第5章 標準入出力ライブラリ

はじめに 「詳解 UNIXプログラミング」の第五章を示します。 本家 http://d.hatena.ne.jp/atsuoishimoto/20110317/1300328961 5.1 getc()とputc()を用いて標準出力へコピーする 1章あたりでも書いた気がするけど。 Perlでは putcがありませんので、printを使…

Perlで学ぶ「詳解 UNIXプログラミング」(その3) 第3章 ファイル入出力

はじめに 「詳解 UNIXプログラミング」の第三章を示します。 本家 http://d.hatena.ne.jp/atsuoishimoto/20110310/1299715993 3-1標準入力ファイルがシーク可能で有るかどうかを調べる POSIX::lseekが使えます。 #!/usr/bin/env perl use strict; use warnin…

Perlで学ぶ「詳解 UNIXプログラミング」(その4) 第4章 ファイルとディレクトリ

はじめに 「詳解 UNIXプログラミング」の第四章を示します。 本家 http://d.hatena.ne.jp/atsuoishimoto/20110315/1300142354 4.1 指定したファイルの種類を出力する もっと種類は調べられますが、Python版に合わせています。 詳しくは "man 2 stat"等を参照…

perlで学ぶ「詳解 UNIXプログラミング」(その1) 第1章 概論

はじめに 「詳解 UNIXプログラミング」の第一章を示します。 本家 http://d.hatena.ne.jp/atsuoishimoto/20110307/1299456377 1.1 ディレクトリ内の全てのファイルをリストする opendirと readdirで実現できます。 #!/usr/bin/env perl use strict; use warn…

Perlで学ぶ「詳解 UNIXプログラミング」(その0)

初めに id:atsuoishimotoさんのPythonで学ぶ「詳解 UNIXプログラミング」シリーズで Perlで書いたらどうなるかというのがあれば面白いんじゃないかなと思って書きます。 本は一応持っているのですが、全然読めてないので、 コードは id:atsuoishimotoさんが…

キャリア別アドレスブック登録用QRコード生成プログラム

今回の地震にあたり、大学時代一緒に過ごした人たち、後輩の 緊急連絡網を作成しようということで、情報を送ってもらったのですが、 携帯電話に打ち込むのが面倒くさすぎるということで、QRコードにしたら カメラで取るだけなので簡単じゃねって思って作った…