perl

マスタリングPerl (8章 シンボルテーブルと型グロブ)

my変数とlocal変数 my変数: スコープの外では、my変数の影響は及ばない。例えば、サブルーチンAの中でサブルーチンBを呼び出した場合、Aで定義したmy変数はBに影響しない。 local変数: スコープが残っている間は、値を保持する。例えば、サブルーチンAの中で…

マスタリングPerl (7章 Perlをクリーンアップする)

勉強メモ。 コーディングスタイルは一貫性を保つことを心掛ける。 人のコードを直すときは、その人のスタイルに合わせる。 perltidy Perlプログラムの整形 -gnuオプションで、GNUコーディングスタイルでの整形 B::Deparse 難読化の解除(De-Obfuscation)。Per…

マスタリングPerl (6章 Perlのベンチマーク)

勉強メモ。 実行時間のベンチマーク ウォールクロック ->プログラムの開始時と終了時に時計を見て計測 プログラム内で処理前後のtime値を取得し計測 OS標準のtimeコマンドで計測 $ time program.pl Benchmarkモジュール #!/us/bin/perl use strict; use warn…

マスタリングPerl (5章 Perlのプロファイリング)

勉強メモ。 プロファイリングとは? プログラムが処理する対象を記録してサマリを作成し、プログラムの改善箇所を見つける。 Devel::SimpleProf smallprof.outというサマリ結果を残す。 各プログラム行、実行した回数、各行のCPU時間が記録される。 $ perl -…

マスタリングPerl (4章 Perlのデバッギング)

勉強メモ。 printまたは、carp(warn)で変数を出力 変数をブレース[ ]で囲むと、先頭または末尾の空白が表示されるので、分かりやすい。 プログラムのトレース Carpモジュールのcluckまたは、confessでスタックトレース(サブルーチンの呼び出しと引数リスト)…

マスタリングPerl (3章 安全なプログラミング技法)

勉強メモ。 Taint Checking(汚染チェック) フォームからのデータ、コマンドライン引数、環境変数、ロカール情報、幾つかのシステムコールの結果、すべてのファイル入力などを汚染データとして扱い、これらのデータをシェルを起動するコマンド(system, exec …

Acme::24でジャック・バウアー的な何か

TWENTY FOURって、面白いですよね。 ということで、Acme::24を使ってみました。 Acme::24 - Your favourite TV-show Acme module Acme::24だけでは面白くないので、Google AJAX Language APIを使って日本語翻訳もしてみました。 1時間毎にtwitterへpostして…

マスタリングPerl (2章 高度な正規表現)

勉強メモ。 特殊配列 "@-"と"@+" 正規表現によってマッチした先頭と末尾の文字列オフセットを、それぞれ配列"@-"と"@+"に保持する。 "@-[0]"と"@+[0]"は"$&"の開始位置と終了位置、"@-[1]"と"@+[1]"は"$1"の開始位置と終了位置を保持する。 #!/usr/bin/perl …

perldocコマンドで「Permission denied」

perldocを実行すると、Permission deniedで何も表示されない。 sh: /usr/bin/pod2man: Permission deniedなぜか、pod2manのパーミッションが0666になっている。 パーミッション変更で解決した。 $ ls -al /usr/bin/pod2man -rw-rw-rw- 32 root wheel 807 6 2…

マスタリングPerl (1章 Perlマスタになる)

マスタリングPerlを読み始めた。Perlマスタになりたい。 Perlマスタになるには、必要以上の事柄を理解し、数多くの作業を自分で行い、さらに他者の経験からできる限り多くの事を学び取ることだ。 表紙はビクーニャ。ということで、ビクーニャ本です。

YAPC::Asia 2009 2日目

前夜祭を含め、内容の濃い3日間でした。 スケールするウェブアプリケーションを20分で作る方法 RDB Shardingスケール時の問題、課題 クエリーが複雑(特に書き込み) ノード間の一貫性 動的にノードを増やしたい 以下のツールで解決 Incline プログラムでの非…

YAPC::Asia 2009 1日目

YAPC::Asia 2009に参加してきました。 参加メモ、感想などなど。 Welcome 今年からYAPCの主催はhttp://japan.perlassociation.org/jpa 2年連続で世界最大のYAPC 今年のテーマは、3つの「C」 Community Corporate Connect(CommunityとCorporateをつなぐ) 基調…

YAPC::Asia 2009 前夜祭

YAPC::Asia 2009の前夜祭に参加してきました。 今年の前夜祭は、Yokohama.pm出張版です。 WAF、HTML5、PHP、全裸、エロと盛りだくさんの内容でした。 WAFネタが多く、乱立状態のような気がした。 http://conferences.yapcasia.org/ya2009/ Yokohama.pm 出張…

Shibuya Perl Mongersテクニカルトーク#11@リクルート本社サウスホール

Shibuya Perl Mongersテクニカルトーク#11に行ってきました。Shibuya.pm初参加です。 id:TAKESAKOの「今日はPerlではありません」という宣言どおり、sandbox、x86 binary、ちょっとPerl(VM)ありの濃い内容でした。 個人的には、sandbox、PerlVMの話が勉強に…

JPAセミナー#01「モダンPerlの現場」@秋葉原UDXカンファレンス

JPAセミナー#01に行ってきました。 今回は、Jay Shirleyさんによる二本立てです。 Better Perl Practices - 最新Perl開発手法のススメ Catalyst Guts - 高機能WebフレームワークCatalystを最大限に使う方法 (参加メモ) Better Perl Practices small start と…

シンボリックリファレンス

シンボリックリファレンスとは、文字列によるリファレンスや文字列を変数名として解釈させることができる機能です。 use strictもしくはuse strict 'refs'すれば、シンボリックリファレンスの利用は禁止されるので、使うことはあまりないです。 #!/usr/bin/p…

unpack関数で部分文字列抽出

substr関数でなくても、unpack関数で文字列の部分抽出が可能です。 ただし、Unicode(マルチバイトデータ)文字列では、期待通りに動きません。 unpack(TEMP, EXPR) # 文字列EXPRを受け取って、TEMPに従って位置を決める。 TEMP文字 x -> スキップするバイト数…

WWW::Mechanizeが便利

WWW::Mechanize - Handy web browsing in a Perl objectWWW::Mechanizeがいろいろできて便利。 リンク切れチェックスクリプトを書いてみた。 #!/usr/bin/perl # 引数のページにあるリンク切れをチェック use strict; use warnings; use WWW::Mechanize; my $…

Module::CoreListにバージョンを引き渡す時の注意

$]でバージョンを渡すと、5.10.0では5.010000となる。 Module::CoreList内で有効なバージョン番号は5.01なので、 5.10.0の場合、$]でバージョンを指定するとモジュール情報が取得できない。 Module-CoreList-5.20190220 - what modules shipped with version…

CPANモジュールをDebianパッケージ化する

CPANモジュールは、dh-make-perlコマンドでdeb化できます。 今回は、Net::Twitterをdeb化しました。 CPAN設定は事前に実施しておきます。 まずは、dh-make-perlコマンドをインストールします。 $ sudo aptitude install dh-make-perl dh-make-perlコマンドで…

HTML::Parserでリンク情報取得

指定したサイトのHTMLを解析して、リンク情報を抜き出すスクリプト。 HTML::Parserを初めて使った。 #!/opt/local/bin/perl use strict; use warnings; use LWP::UserAgent; use HTTP::Request; use HTML::Parser; my $url = shift; my $req = HTTP::Request…

DBD::mysqlインストール時のエラー

エラー 1 Can't exec "mysql_config": No such file or directory at Makefile.PL line 454. Can't find mysql_config. Use --mysql_config option to specify where mysql_config is located(原因・解決策) mysql_configコマンドがない。libmysqlclient15-d…

クラス継承 - use base と use parent -

CatalystのControllerあたりのpmファイルを見ていたら、use parentでクラス継承してました。 使い方は、use baseと同じようです。 use parentが主流になりそうです。でも標準モジュールではないです。 parent - Establish an ISA relationship with base cla…

MVCフレームワークCatalystをインストール

大量のモジュールがインストールされますが、以前より簡単にインストールできました。 今までは、ほとんどフレームワーク使わなかったので、今さらながら勉強します。 cpan> install Task::Catalyst 基本的に質問には、Enter(デフォルト)で。 Version Perl5.…

Class::Data::Inheritableでクラスデータ呼び出し

通常、クラス(パッケージ)からはメソッド(サブルーチン)呼び出ししかできませんが、Class::Data::Inheritableモジュールを使用すれば、クラスデータ(変数)呼び出しが可能になります。 もちろん、サブクラスへの継承・オーバーライドも可能です。 まずは、普…

Net::TwitterでコマンドラインからTwitterに投稿

とりあえず、コマンドラインから投稿できるスクリプトを書いた。 #!/usr/local/bin/perl use strict; use warnings; use Net::Twitter; my $twit = Net::Twitter->new(username=>"myuser", password=>"mypass" ); $twit->update($_) for @ARGV ほとんど、SYN…

PlaggerでRSSとMixi日記をGmailに送る

動作確認もかねて、定番(?)設定を試す。 RSSをGmailへ送信 使用モジュール Subscription::Config Publish::Gmail Mixi日記をGmailへ送信 使用モジュール CustomFeed::MixiScraper Publish::Gmail 件名が「マイミク最新日記」なメールが送信される。便利。Mix…

すぐわかる オブジェクト指向 Perl

リファレンス・オブジェクト指向と、非常に解りやすい解説でした。 実際にコードを書きながら読むと、なるほどと思うところがたくさんありました。 順番としては、初めてのPerlのあとに本書を読むと効果的かなと思いました。

etchでCPANからPlaggerをインストールの続き

昨日の時点で、いろいろなモジュールがインストール失敗してました。 ということで、分かるところからインストールすることにしました。 エラーになったモジュールのインストール XML::Twig XML::Parserが依存しているので、XML::Parserのインストール。。 …

etchでCPANからPlaggerをインストール

CPANからPlaggerをインストールしてみました。 $ sudo cpan cpan> install Plagger XML::LibXMLのインストールが失敗。 running xml2-config... (中略) looking for -lxml2... no looking for -llibxml2... no libxml2 not found (中略) /usr/bin/make -- NO…