This domain may be for sale!
変数の中身を表示してくれるperlのCPANモジュール、Data::Dumperは、UTF8フラグのついているデータがエスケープされて文字化け状態になってしまうため、UTF8で日本語を扱う時に困る。でもそもそもUTF8フラグがついていなければエスケープされることもなくて困らないのはなんで?というわけでソースを読むと Data::Dumper::qquote() というメソッドの中で、文字列をエスケープする条件に my $bytes; { use bytes; $bytes = length } s/([^\x00-\x7f])/'\x{'.sprintf("%x",ord($1)).'}'/ge if $bytes > length; というトリッキーなコードが入っていた。UTF-8フラグがついていると、UTF8の文字列が正しく文字として認識されてlengthがバイト数よりも小さくなるので
宣伝と注意書き このサイトが元になったCPANモジュールガイドという本を書きました。 本書でもとりあげています。 このページの最後で扱っている$Data::Dumper::Deparseには限界があるのですが、コードリファレンスを含むようなDumper結果を得たい(より再現性の高いシリアライズ)場合に使えるモジュールとしてData::Dump::Streamerの使い方も扱いました。 2008-01-31 use Data::Dumper; 今回は基本に立ち返り、Data::Dumper です。すでに説明なく何度も使ってる気もしますが、取り上げておくことに意味があると思うので、やります。 Data::Dumper はある変数のデータ構造を Perl のシンタックスで表現してくれるもので、デバッグ時など普通によく使います。Ruby の p() や .inspect()、JavaScript(
use strict は、 CPANからなにも落としてこずに使えるように、 Data::Dumperも、 use Data::Dumper; と書けば、 Perlに組み込まれているので使えます。 こいつは、すこぶる便利です。もう手放せない。 Rubyのp や、 PHPのprint_r みたいな機能です。 使い方を見てみましょう。 use strict; use Data::Dumper; my @array = ('a', 'b', 3, 'z'); my %hash = ('i'=>'い', 'j'=>'じぇー', 'k'=>'けー'); print "---------\n"; print Dumper \@array; print "---------\n"; print Dumper \%hash; 結果: --------- $VAR1 = [ 'a', 'b', 3, 'z'
あるいは、UTF-8のバイト文字列からフラグのついた内部文字列にするには、decode_utf8()を使う。 そのものっぽい名前だし。 普通のencode('utf8', $str)、decode('utf8', $str)よりも、処理速度がその方が早いようだ。 #!perl use strict; use warnings; use Benchmark qw/ cmpthese timethese /; use Encode qw/ decode decode_utf8 /; my $str = 'じゅげむじゅげむごこうのすりきれかいじゃりすいぎょのすいぎょうまつうんらいまつふうらいまつくうねるところにすむところやぶらこうじのぶらこうじぱいぽぱいぽのしゅうりんがんしゅうりんがんのぐうりんだいぐうりんだいのぽんぽこぴいのぽんぽこなあのちょうきゅうめいのちょうすけ'; cmpthese( t
Perlには、日時の加・減算を扱うモジュールが標準でついてきません。僕の仕事場ではずっと、同僚が作ったオリジナルモジュールを皆で使いまわしていたのですが、今になって、世間的 (CPAN) にはどんなものがあるのか気になって調べてみました。※参考になったのは miyagawa 氏のメールマガジンの過去記事と、perl.com の The Many Dates and Times of Perl なるエントリでした。 今回は数ある日付関連モジュールの中から、Dave Rolsky氏の DateTime モジュールについて、その基本的な使い方について簡単にまとめたので共有してみます。 同氏は上記 perl.com 記事の執筆者であり、この前の YAPC::Asia で DateTime project について講演してくれていた人です。気合の入ったモジュールを作ってくれた事に感謝。 目次 基本
Perl › モジュール › here DateTimeを使用すると、日付と時刻を汎用的に扱うできます。 これまでは、なんとか標準モジュールで日付を扱おうと記事を書いてきましたが、本当はあまりよくない方法です。日付と時刻というのは例外が多く自分でスクリプトを書くとバグが混入しやすいです。 このモジュールは便利ですが、汎用的に日付を扱うために依存するモジュールの数が非常に多いです。また日付の計算を早く行うために、一部はC言語で記述されています。このため、Windows環境でのインストールには少し準備が必要です。 日付・時刻に関する一般的な情報は、以下を参考にしてください。 Perlで日付・時刻を扱う CPANからDateTimeをインストールする コマンドプロンプトで cpan DateTime と打ってください。cpanを使用するのがはじめての場合は、cpanの設定の初期化の作業が必要です
jcode.plとJcode.pmに感謝の気持ちを込めて。*1 Jcodeにはtr()の機能が付いてますが、ハイフンが入ると弱いようです。っていうか、常々そう思っていたので、ちょっと深く調べてみました。 やりたいこと 電話番号っぽい全角数字+記号を半角にしたい。全角ハイフン(っぽいもの)は3種に対応。括弧は削除でいい。 特に、全角ハイフン(っぽいもの)を半角ハイフンに変換したい。 先に結論 perl5.8.X以降の人は、Jcodeのtrメソッドは使わずきちんとunicode化してtr///を使いましょう。 それ以前のバージョンのPerlを止むなく利用する場合、Jcode.pmやjcode.plのtrメソッドを利用しますが、全角ハイフンの置換だけ他の全角文字と分け、 tr('―−ー', '-') のように置換先の文字列がハイフンだけになるように書くと、ハマらずに済みます。 ユニコード文字列編
lightly.wjg.jp is not accessible... Sorry. I do not know why this site is not working. If you know Administrator of this site, please contact directly. You may be able to see it in Google cache. For administrator ... MyDNS.JP did not received IP address from you over One week. Please check your notify system. If you restart notification of IP address, MyDNS.JP will apply your IP address to DNS inf
目次 - Perl Index Theme Perl について、復習を兼ねて断片的な情報を掲載して行く連載その 0xab 回。 Perl モジュール File::Spec の各種メソッドを確認する。その 9。 rel2abs() について。 File::Spec のメソッド その 8 Perl 「 モジュール 」File::Spec メソッドリスト その 1 (0xa3) Perl 「 モジュール 」File::Spec メソッドリスト その 2 (0xa4) Perl 「 モジュール 」File::Spec メソッドリスト その 3 (0xa5) Perl 「 モジュール 」File::Spec メソッドリスト その 4 (0xa6) Perl 「 モジュール 」File::Spec メソッドリスト その 5 (0xa7) Perl 「 モジュール 」File::Spec メソッドリスト
perlでプログラムデバック時に Data::Dumper を使って変数内のデータ構造を見たいことがあると思います。 #!/usr/bin/env perl use strict; use warnings; use Data::Dumper; my $var = { array => [1,2,3], hash => { key1 => "val1", key2 => "val2" }, coderef => sub { "this is coderef"} }; print Dumper $var; 普通のarrayやhashであれば dumper メソッドを使い構造を確かめることはできますがcode reference(コードリファレンス)を見ようとすると sub { "DUMMY" } となってしまい内容が分からず枕を涙で濡らすことになってしまいます。 $VAR1 = { 'has
オブジェクト指向Perlのしくみを解説します。 Perlモジュールの作り方と使用法についても解説します。 [1] パッケージ名前空間をPerlではパッケージと言います。 デフォールトのパッケージは main パッケージです。 ただしファイルのなかにパッケージ宣言(package ...)の行があると、それ以降に書かれた「グローバル」変数(our 変数)やサブルーチンは、そこで宣言されたパッケージのものになります。 package Foo; our $name = "I am Foo!"; # $name はパッケージ Foo に入る。 # our は付けなくてもいい...。パッケージの及ぶ範囲(スコープ)はつぎに又、別のパッケージ宣言が来るまでずっと続きます。 但しパッケージ宣言がブロック {...} のなかで為された場合は、そのブロックが閉じたところでパッケージのスコープが消えます。 p
1.パッケージ パッケージとモジュールは、変数名やサブルーチン名の重複を防ぐために用意されている機構です。特にモジュールに関しては、他人の作成したユーティリティを簡単に再利用することができます。 パッケージの概要 変数の有効範囲としてグローバル変数とローカル変数のおさらいをしましょう。サブルーチンやブロック外にある、もしくは宣言されていない変数はすべてグローバル変数で、スクリプト内のどこでも有効です。これに対して、my宣言した変数はローカル変数となり、宣言したブロックの内側のみ有効です。 my $global = "It's getting exciting now !"; { my $local = "Think of everything we've accomplished."; } print $global, "\n"; >It's getting exciting now !
MIME::Base64 - base64文字列のエンコードとデコード 概要¶ use MIME::Base64; $encoded = encode_base64('Aladdin:open sesame'); $decoded = decode_base64($encoded); 説明¶ This module provides functions to encode and decode strings into the Base64 encoding specified in RFC 2045 - MIME (Multipurpose Internet Mail Extensions). The Base64 encoding is designed to represent arbitrary sequences of octets in a form that need not
LWPで別サーバーのtest.cgiに以下のようなコードで POST送信しています。 use HTTP::Request::Common; use LWP::UserAgent; $query="param1=dummy"; $ua = LWP::UserAgent->new(); $req = HTTP::Request->new(POST => "http://xxx.xxx.xxx/test.cgi"); $req -> content_type('application/x-www-form-urlencoded'); $req -> content($query); $res = $ua->request($req); $success = $res -> is_success; if(!$success){ die("error"); } $con = $res -> cont
LWPのレスポンス確認用メソッドまとめ:Summary of verification methods of HTTP response by LWP LWPを使ったhttpレスポンスの取得には、HTTP::Request(::Common)モジュールを使ってリクエストのオブジェクトを作っておくと、レスポンス情報を確認するさまざまなメソッドを使用することができる。 HTTPモジュール群にはまず「HTTP::Message」があり、このオブジェクトには幾つかのヘッダとコンテント(ボディ)取得用のクラスが入ってるが、このクラスは抽象クラスである。 つまりHTTP::RequestとHTTP::Responseのための基本クラスとしてだけ使われ、それ自身のインスタンスは生成されることはない。 「HTTP::Response」はHTTP形式のレスポンスをカプセル化するクラスである。 このク
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く