perl

use utf8での文字列のバイト数

use utf8している時のlengthは文字数を数えてしまうけど、それ以外のときは、バイト数を数えるそうだ。ところで、以下のようにしたらutf8のバイト数が取れるんじゃないかと思うんだけど、あまりutf8文字列のバイト数に需要がないのか、ググっても例が出てこ…

追記・文字コード

いまいちわかりにくいかなと思ったのでもうちょっと解説。 対象はMacのTerminalを想定。Terminal.appはウィンドウ設定を開いてプルダウンをディスプレイに変更すると、「文字セットエンコーディング」という設定項目があり、「Unicode(UTF-8)」に設定されて…

文字コード

スクリプトに渡すデータの文字コード スクリプトの文字コード(文字列リテラル) 出力の文字コード Encodeモジュールのエンコーディングオブジェクトのdecode関数は渡された文字列をutf8に変更し、その文字列にutf8フラグを付ける。 文字列の合成や連結は、utf…

Path::Classでも

File::Findでやってたけど、 こっちも良さげーーー #! /usr/bin/perl use strict; use warnings; use Path::Class; my $dir = shift or die "usage : $0 <dir>\n"; dir($dir)->recurse( callback => sub { my $file = shift; return unless -f $file; my $f = $fi</dir>…

File::Findが便利

今更なんですがねー。 use strict; use File::Find; my ($target_directory) = @ARGV; my $filter = sub{ /\.(?:gif|jpe?g|png)/ or return; printf qq{<img src="%s/%s" alt="%s">\n},$File::Find::dir,$_,$_; }; find($filter,$target_directory || '.');; 対象となるディレクトリ以…

シュワルツ変換

my @CSV = ( '1,kame,34', '2,usagi,120', '3,panda,80', ); # 3カラム目でソート map {$_->[0]} sort {$a->[3] <=> $b->[3]} map {[split ',',$_]} @CSV; CSVのデータ内に改行が入ってたらどうすんねんとか、 ダブルクォートで囲まれた文字列内にコンマ入っ…

List::Util

このモジュールをuseすると使える関数の定義は、↓のようになってるんだけど、 sub sum (@) { reduce { $a + $b } @_ } sub min (@) { reduce { $a < $b ? $a : $b } @_ } sub max (@) { reduce { $a > $b ? $a : $b } @_ } sub minstr (@) { reduce { $a lt …

DBIx::Class → DBIC

DBIx::Classを使うことになって、ネットで情報をあつめてたんだけど、 DBICという風に略しているサイトが結構あることにビックリ。 http://nekokak.jf.land.to/wiki/wiki.cgi/sub?page=Perl%2FDBIC ↑がとても参考になって重宝しています。

無限ループ

http://b.hatena.ne.jp/entry/5241221 あはは↓文字コードutf8で保存して。 use utf8; $main::д = 1; for(;д;){ print "たすけてー\n"; }

処理系の違いによる文字化けの簡単な対処

perlで処理をする場合、 外部ソースの文字コード perlスクリプト内の文字列リテラル(スクリプトの文字コード) 出力を表示する処理系の文字コード のそれぞれをチェックする必要がある。Windowsならテキストファイルは特に指定しない限りShiftJIS MacOSならUT…

SQLite

SQLite3をインストール DBD::SQLiteをインストール DBをtest.dbという名前で作成 use DBI; my $db_name = 'test.db'; my $dbh = DBI->connect("dbi:SQLite:dbname=$db_name",'','',{AutoCommit=>0}); my $table_name = 'test_t'; #テーブル作成 { my $sth = …

一時表の使い途

テーブルAに プライマリキー と ハッシュを文字列化したものを格納しておく(主として検索に使用する値も別途カラムとして定義しておけばよいだろう→indexが作れる) ハッシュ内のデータで集計を行う場合に、集計を行いたいハッシュのキーをカラムとしてテー…

Dateクラス

Date::Simpleつかえ!!とか思うけど、 さっきJavascriptで作ったのをPerlでやってみよと思ってやってみた。 10分足していく処理を書いたとして、 フォーマット文字列の分の部分が60越えても時間になおるので 便利かなーかなーーと思ったけど、どうだろうか。 …

sysread

perlのsysreadの引数は、ファイルハンドル,データ保持用の変数,読み込むバイト数,オフセットの4つがあるんだけど、 オフセットでマイナスの値を指定すると、読み込む対象の後ろからのオフセット値になるのだと思っていた、、、 どうりで、範囲外だっていうエ…

簡単なトランザクション処理をかいてる。・複数の処理を登録し、実行する。 ・登録にはオープンするファイルとそのファイルにたいする処理をわたす。 ・実行時には登録されたファイルをコピーしてそれに処理をほどこす ・複数ある処理のうちどれか一つでも失…