Perl
Test::Perl::Criticは、Perlベストプラクティスのポリシーをどのていど厳格に守るのか設定が可能。 設定は、Perl::Criticと同じようにできる。 今回のエントリーは、その設定項目について。 設定方法 useにリストとして指定 use Test::Perl::Critic ( -profi…
今日はサブルーチンについて。 critic_ok( $FILE [, $TEST_NAME ] ) # t/991_perlcritic.t use strict; use Test::More; eval { require Test::Perl::Critic; Test::Perl::Critic->import(-profile => "t/perlcriticrc") }; plan skip_all => "Test::Perl::C…
社内勉強会で発表するためのメモその1 概要 Test::Perl::Critic wraps the Perl::Critic engine in a convenient subroutine suitable for test programs written using the Test::More framework. Test::Perl::Critic - Use Perl::Critic in test programs…
1ヶ月近く経つのに、未だに自分の中でYAPCが終わってなかったのでいい加減終わらせておく。 タイトルの通りYAPCに行って来た。 二日間のチケットを買ってはいたんですが、一日目は仕事があって不参加。 二日目は寝坊してしまい遅刻して参加、70周年講堂での…
package Test; use Mouse; has hoge => ( is => 'rw', isa => 'Str', ); package main; my $test = Test->new; $test->hoge( undef ); こんな感じで、isaでStrを指定したアトリビュートにundefを書き込もうとすると怒られる。理由は簡単で、Str型は文字列で…
pngのQRコードを作ろうとしていろいろとはまった。 pngのフォーマット対応してないよってエラーが出てる。 libpngがインストールされてないか確認。 libpngインストールされてる。 何だこれ状態。でいろいろ調べる。 tokuhiromさんのエントリーを見つける。 …
スライスでのアクセスのほうがパフォーマンスが出ると思っているが、 実際どの程度の差なのか少し気になったので測ってみた。 datafile.yaml データ構造を考えるのがめんどくさかったので、ここから拾ってきました。 るびま teams: - name: Akudaman members…
とある事情で書いたけど、本当に必要だったのは違うものだった。 まぁせっかくなので、ブログに書く。 use strict; use warnings; use Math::BigInt; { my @fibonacci_number = (); sub fibonacci { my $num = shift; unless ( $fibonacci_number[$num] ) { …
タイムラインを取得して、つぶやきに含まれているURLを抜き出してみたかった。 Twitter API API上でつぶやきのことは、status と表現されている模様- タイムラインの取得には、statuses/home_timeline または、statuses/friends_timeline を使うと良さそう …
11章 オブジェクト入門 11.1 動物と話すことができたら use strict; use warnings; sub Cow::speak { print "a Cow goes moooo!\n"; } sub Horse::speak { print "a Horse goes neigh!\n"; } sub Sheep::speak { print "a Sheep goes baaah!\n"; } my @pastu…
気になったので調べてみた。 perlrefを見れば一発だった。 そもそも+を付けるって何 中かっこは、BLOCK を始めとして他のことにも使われますから、 開きの中かっこが BLOCK の開始でないことを Perl に教える ために文の最初の中かっこの前に + や return を…
10章 大規模なプログラムの構築 10.2 evalによるコードの挿入 # Example.pm sub println { my $message = shift; print "$message\n"; } # sample.pl sub load_common_subroutin { my $pm_file = shift; open my $code_fh, $pm_file or die $!; undef $/; my…
Perlは、プリインクリメントとポストインクリメントに性能差が殆ど無いと、 初めてのPerlか、Perlベストプラクティスかに書いてあった気がした。実際どうなのか、前から気になっていたのでベンチマークを取ってみた。 ベンチマークスクリプト use Benchmark …
9章 リファレンスを使った実践的なテクニック 9.1 ソートとは sort演算子 デフォルトの動作は、テキスト本来の順序付け 現在のロケールと、文字セットで決まるソート順 詳細は、perllocale 他のソート順でソートしたい場合 ソートアルゴリズムを書く必要はな…
続・はじめてのPerlの 8.4.4でIO::Teeが紹介されてるが、 サンプルコードの動作とコメントが一致していないような気がしたので、調べてみた。 # 続・はじめてのPerl P104 の擬似コード use IO::Tee $tee_fh = IO::Tee->new( $read_fh, $log_fh, $scalar_fh )…
今日も(ry 8.1 古い方法 ファイルハンドルはデータ型の1つ ライブラリや、コードの他の部分で共有するには? 型グロブや型グロブリファレンスを使う 型グロブ 名前のすべてのパッケージ変数を指すポインタを格納している 型グロブを別の型グロブに代入す…
今日もやっぱりまとめなんです。 7章 サブルーチンへのリファレンス 7.1 名前付きサブルーチンを参照するには サブルーチンのリファレンス コードレフとも呼ばれる バックスラッシュ演算子を使い、取得する 配列やハッシュのリファレンスの取得方法と同じ サ…
6章 複雑なデータ構造の操作 6.1 デバッガを使って複雑なデータを見るには デバッガの起動 -dスイッチを指定してPerlを起動 $ perl -d sample.pl デバッガの使い方 デバッガは、今から実行する行を出力しコマンド入力を待つ sコマンド プログラムのシングル…
今日もまとめ。 5.1 データへの複数のリファレンス Perlは参照カウンタによって、データにアクセスできるルート数を管理 配列の作成で、まず1カウント それに対するリファレンスを作るたびに1カウントされる 参照カウンタが0にならない限り、配列をメモリ内…
今日もまとめなんです。。。 4章 リファレンス入門 4.1 多くの配列に対して同じ処理を実行するには サブルーチンに配列を渡す サブルーチンで、渡された配列に要素の追加は行えない それを行うためにリファレンスを使う 4.2 配列へのリファレンスを取るには …
今日もまとめ 3章 モジュールの使い方 3.1 標準ディストリビューション ポピュラーなモジュールは、すでにPerlに付属されている 5.003_07 98個 5.8.8 359個 これらを「コアモジュール」または、「標準ディストリビューション」と表す Module::CoreListを使い…
まとめ。 2章 中級者の基礎知識 2.1 リスト演算子 print 1つ以上の引数を与えると1つにまとめる もっともよく使われるリスト演算子 sort 入力リストを順番に並べ返す reverse 逆順のリストを返す その他にも多くのリスト演算子 2.1.1 grepによるリストのフィ…
一つ前のエントリーを調べるに当たって勉強しなおしたのでまとめる。\r, \n を各環境下で出力した場合、出力されるコード値それぞれ以下のようになる模様。 Linuxの場合 \r は \x0d として出力され、 \n は \x0a として出力される。 $ perl -e 'print "\r\n"…
念のため続きを読むで答えてます。(3/2 参考を追加)
binmodeのドキュメントに出てくる、\cM \cJ が何を意味しているのか分からなかったので調べた。\cM、\cJ は制御文字で、 \cM は、\r と同じ。 \cJ は、\n と同じ。という結論に至ったのだが、合ってるのかな。 #!/usr/bin/perl print unpack( "H2", "\cM" ),…
以前からcpanmを使ってローカル環境にモジュールを突っ込んではいたのですが、 パスの設定など場当たり的にやっていたので、改めて設定しなおしました。 参考 http://d.hatena.ne.jp/tokuhirom/20110201/1296530510 cpanmによるPerlのローカル環境構築 - Per…
Hokkaido.pm#4にて、aloelightさんが紹介されていたモジュール。 Config::Pitとは? アカウント情報の管理にConfig::Pitを使用することによって、コードからアカウント情報を分離できます。アカウント情報が格納された設定ファイル自体は、~/.pit/ 内に格納…
Hokkaido.pm#4で紹介されてたので、自分でもやってみる。 紹介されていたのは、Image::ExifTool を使った位置情報の取得方法だったが、 天邪鬼な自分は、別のモジュールを使ってやってみる。 とはいっても、Image::EXIF を使うだけなので労力は大して変わら…
cpanmでCrypt::SSLeayをインストールしようとして、失敗した。build.logを確認すると、以下のようなエラーが出てる。 No installed SSL libraries found in any of the following places. /local /local/ssl /opt/ssl /usr /usr/local /usr/local/ssl /usr/l…
bytesプラグマを使うことで解決する。 (11/02/12)追記しました何もせずに length をしてみると。 use strict; use warnings; use utf8; my $str = "あいうえお"; print length $str,"\n"; 結果は文字数。 5 以下の用に bytesプラグマを使うことで、バイト…