タグ

perlに関するpikioのブックマーク (28)

  • Test::Moreでテスト事始め - JPerl Advent Calendar 2009

    はじめまして。 最近Perlを始めたmyfinderです。 ほかの方が書いたCPANモジュールを紹介したりそれらを使ったTipsを書くCasual Trackということで、今回はテストに関連するモジュールについて書きます。 プログラムの「テスト」 テストを書くというのはデンタルフロスを使うようなもので、誰もが良いことだといいつつ、実際には軽視されがちだ。 なんて言われることもありますが、実際テストがないとプログラムの改修とか引き継ぎとかが非常に大変になりがちです。 また、CPANにアップされているモジュールの中には、モジュール体よりもテストコードの量の方が多いものも多々あります。 なのでプログラムの質を保証したり、内容を的確に伝達するにはテストが欠かせないものであることは間違いないと思います。 早速使ってみる 例えば消費税の計算をしてくれるConsumptionTax::JPというモジュ

    pikio
    pikio 2013/10/08
  • にひりずむ::しんぷる - PerlIO::encodingでのfallback

    id:tokuhiromさんにコメントで教えてもらいました!! ドキュメントのバグっぽくて、s/FB_//gすれば正常に動きました。id:tokuhiromさんありがとうございます!! ちなみにEncode2.10あたりから仕様が変わったとのうわさも・・・ あと、関数リファレンスでもなんかほげる。 use strict; use warnings; use utf8; use PerlIO::encoding; $PerlIO::encoding::fallback = sub { sprintf "<U+%04X>", shift }; binmode STDOUT => ':encoding(ascii)'; print "Hello, 世界!!\n"; Hello, <U+4E16><U+754C><U+FF01><U+FF01> Hello, <U+4E16><U+754C><U+

  • PerlとGDで画像生成

    静的な画像表示 まず、CGI で静的な画像ファイルを出力する方法を説明しましょう (画像は 東京発フリー写真素材集 から拝借しました)。 image-1.cgi (実行結果) 1: #!/usr/local/bin/perl 2: 3: # $Id: image-1.cgi,v 1.1 2004/06/25 17:30:47 zxr400 Exp $ 4: 5: my $imgfile = '../../img/tokyo-tower.jpg'; 6: my $imgsize = (stat($imgfile))[7]; 7: 8: print "Content-type: image/jpeg\n"; 9: print "Content-Length: $imgsize\n"; 10: print "\n"; 11: 12: binmode(STDOUT); 13: 14: open(I

  • Site Cooler NZ | Points to Note When Shopping for a Washing Machine

    Blog Post Featured post Sprinkle delicious dishes as a cook with gourmet cookware Continue reading Points to Note When Shopping for a Washing Machine There are different washing machines brands in New Zealand. When shopping, therefore, you need to ensure that first, you get a quality machine; a machine that will last through many years without breaking down. You check product warranties and review

    pikio
    pikio 2010/04/14
  • perlの波ダッシュの文字コード変換のまとめ - (゚∀゚)o彡 sasata299's blog

    2009年02月22日22:31 Perl perlの波ダッシュの文字コード変換のまとめ perlの文字コード周りはなかなかカオスです。外部エンコードとか、perl内部での文字コードとか、UTF8フラグとか。UTF8フラグ?なにそれ?な人は、こことかここを見てみると良いかも。(・∀・) 基的には外部から入ってきた時点でdecodeして、出力時にencodeしてやれば全て解決するんですが、「〜(波ダッシュ)」と「−(全角マイナス)」だけは特別です。注意が必要なのはこの2パターン。 ① utf8⇔shift_jis ② utf8⇔euc-jp ①については以前、perl utf8→sjisで文字化けという記事で紹介しましたが、encode時に、'sjis'では無くて、'cp932'を指定すればOK。※「〜」とか「−」はsjisには含まれていない文字なのが原因。 今回紹介したいのは②の場合です

  • http://www.mono-space.net/blog/perl/e060731_utf8.htm

  • 第15回 DateTime:APIの標準化をめざして | gihyo.jp

    Cから継承したAPI プログラマにとって、ログの解析や作成などに含まれる日付や時刻の操作は切っても切り離せない分野のひとつです。もちろんPerlにも日付や時刻を操作するための関数は組み込まれています。 ただし、Cから継承してきたlocaltime()やgmtime()の返り値は、お世辞にもわかりやすいとはいえません。リストコンテキストで呼び出せば年月日、時分秒などの値を取り出せるとはいえ、単一の配列で受け取ると、個々の要素を使うときに直感的ではなくなりますし、明示的な名前をつけたスカラー変数を並べて受け取るのはいかにも冗長です。 use strict; use warnings; # 短いけれど非直感的 my @tm = localtime(); $tm[5] += 1900; $tm[4]++; printf "%04d-%02d-%02d %02d:%02d:%02d\n", reve

    第15回 DateTime:APIの標準化をめざして | gihyo.jp
    pikio
    pikio 2009/10/28
  • 200 Blog Not Found : 404 Blog Not Found

    2006年03月16日22:48 カテゴリ一日一行野郎 200 Blog Not Found (他に忘れられがちなもの以外|意外)に忘れられがちなのが、これ。 ステータス200なのに「その商品はありません」 エンジニア以外の人間が読むと、「ページがなければ404エラー。そんなのあたりまえだろ。」で終わってしまいかねない。 ここでは、「404エラーページを見せろ」ではなく「httpヘッダーで404を返せ」と言っているのがミソだ。 「ステータスコードをいじるのは難しい」といった言い訳をするエンジニアもいるが、それはうそだ。 実はCGIなら、最初の行に"Status: ###"と書き込むだけでWeb Serverがよきに計らってくれる。だから、実はこのことは言語の仕様ですらなく、CGIの仕様だ。以下のShell Scirptは立派なCGIだ。 #!/bin/sh echo "Status: 40

    200 Blog Not Found : 404 Blog Not Found
    pikio
    pikio 2009/10/27
  • :: Cepheid :: - ImageMagickの使用例 | 画像へ文字を記入する

    文字を記入する例 文字を記入したい場合、Annotate()を使用します。画像内に任意の文字列を書き込むことが可能で、フォントフォントサイズ、位置、色など細かく調整できます。 #!/usr/local/bin/perl -w use strict; use Jcode; use Image::Magick; # 画像を指定 my $file = "sample.jpg"; # 合成したい文字列 my $text = "ABC123日語"; # UTF-8へ変換 $text = jcode($text)->utf8; # オブジェクト作成 my $image = Image::Magick->new; # 画像読み込み $image->Read($file); # 文字を記入する $image->Annotate(text=>$text, stroke=>'#FFFFFF', fill=

    pikio
    pikio 2009/09/15
  • FreeBSD ports最新ニュース FreshPorts:databases/p5-DBD-PgPP - 0.07

    pikio
    pikio 2009/09/10
  • CGI::Sessionで不要な cgisess_* ファイルを削除 - inutchの日記

    CGI::Sessionを使ってセッション管理を行っていると、ユーザにブラウザを閉じられるとセッションをdeleteできないので、cgisess_* ファイルがゴミとして残るという問題があります。 期限切れのセッションを探して削除する機能を自分で作らなきゃいけないかなーと思ってたら、ちょうどいいモジュールがありました。 CGI::Session::ExpireSessions 下記の方法で、ゴミとなった cgisess_* ファイルを削除できます。 CGI::Session::ExpireSessions -> new(temp_dir => './tmp', delta => 3600 ) -> expire_file_sessions(); ・60分(3600秒)更新されていない ./tmp ディレクトリ配下の cgisess_* を削除。

    CGI::Sessionで不要な cgisess_* ファイルを削除 - inutchの日記
    pikio
    pikio 2009/07/29
  • タイムアウト処理 - futomi's CGI Cafe

    処理に時間がかかりそうな処理を書く際、タイムアウト時間を設定して、それを超えても処理が完了しなければ、 エラーを表示するような処理が必要になることがあります。 特に、ソケットを使って外部サーバーと通信する場合などがあてはまります。 もし相手のサーバーからの応答が無かったらどうなるでしょうか。 応答があるまで待ち続けることになります。 または、ブラウザー側が見切りをつけて待機することをやめてしまうでしょう。 もしご利用のレンタルサーバーに CGI の処理時間に制限があれば、Internal Server Error となるでしょう。 ここでは、秒数を指定してタイムアウト時の処理ができるうようにする方法を解説します。 目次 タイムアウト処理の方法 タイムアウトの処理を実装する方法として、ALRM シグナルを使う方法を解説します。 シグナルとは、イベントが発生した際に、オペレーティングシステムが

    pikio
    pikio 2009/07/21
  • 例外(Exception)って何だろう? - Scrapdiary

    いまいち理解できてなかったeval 例外(exception)を捕捉しようてevalを使ってみたけど、イマイチevalがわからない。 Perl5編 第40章 例外と eval 先日書いたDate::Simpleを使ったコードで、あり得ない日付を与えるとdieするようにしておいた部分を改良。上記を参考に、dieでperl自体が終了するのでは無く、例外が発生したかどうかをスクリプト側で把握できればと思い、試行錯誤でコードを書いてみた。evalには eval 評価・式 eval {}(ブロック) の二つの使い方があり、今回は例外トラップのためなので後者の方になる。 eval.pl #!/usr/bin/perl use strict; use warnings; use Date::Simple qw/date today/; my $input = $ARGV[0]; eval{ my $da

    例外(Exception)って何だろう? - Scrapdiary
    pikio
    pikio 2009/06/15
  • Net::SMTP->auth - World Wide Walker

    Net::SMTP->auth Posted by yoosee on Debian at 2004-08-25 23:42 JST1 Net::SMTPPerl で SMTP Auth の認証が出来たかどうかをチェックするツールを書いていて、Net::SMTP->auth(user,passwd) を使えば良さそうなので早速試した。しかし簡単なプログラムを書いてみても全く動かない。#!/usr/bin/perl use Net::SMTP; my ($remotehost, $user, $passwd) = @ARGV; my $smtp = Net::SMTP->new($remotehost, Timeout=>60, Debug=>0); if($smtp->auth($user, $passwd) { print "SMTP Auth: success.\n"; } else

  • perlとphpで三項演算子の挙動が違う件 - omoonのブログ

    最高にはまった。そんなの有りか!と叫びたい。 perlでは、 my $p = 1; my $q = 1; my $r = $p ? 'p' : $q ? 'q' : 'foo'; print $r; とすると、「p」が返ってくるが、 phpでは、 <?php $p = 1; $q = 1; $r = $p ? 'p' : $q ? 'q' : 'foo'; print $r; ?> なんと、「q」が返る。 このあたりの解説によると、 <?php // ぱっと見た感じでは、これは 'true' と表示されると思うでしょう。 echo (true?'true':false?'t':'f'); // しかし、実際には上の出力結果は 't' です。 // なぜなら、三項演算子は左から右へ順に評価されるからです。 // 上のコードをもう少しわかりやすく書くと、このようになります。 echo ((tr

    perlとphpで三項演算子の挙動が違う件 - omoonのブログ
    pikio
    pikio 2009/01/21
  • ヒアドキュメントの中でPerlの式を書く

    初代新幹線「0系」最後のラストランの日に、新幹線N700系のぞみでイーモバイルしながらこの記事を書いているid:TAKESAKOです。 Perlのヒアドキュメントを使うと複数行にわたる文字列を一気に代入したりするときに楽なので、使っている人も多いと思います。 my $foo = "bar"; my $tmp = time(); # ←関数の実行結果 print<<EOF; <div class="${foo}1"> <h1>TIME: $tmp</h1> </div> EOF しかし、ヒアドキュメントの途中でサブルーチンの実行結果も一緒に埋め込みたいときがでてくるときがあります。 @{[ Perlの式 ]} そのようなときは、@{[ リスト ]} というイディオムを使うと非常に便利です。 print<<EOF; <div class="${foo}1"> <h1>TIME: @{[ tim

    pikio
    pikio 2008/12/15
  • 配列から効率良くプレースホルダを作る : にぽたん研究所

    my @a = qw(foo bar baz); こんな配列から ?,?,? という文字列を使いたい場合があります。 例えば、 SELECT * FROM hoge WHERE user_id IN (?,?,?); みたいな SQL にする場合のプレースホルダを作ると言った具合に。 社内 IRC で、clouder さんが言い出して、 18:27 <clouder>join(',', map('?', @a)) 18:27 <clouder> こんなのしか思いつかない。。 と言う。 まぁ、それが妥当というか、普通それが思い浮かぶよなーって思ってたら、会社の dos さんという人が 19:15 <dos> '?,' x @a; で s/,$//; というソリューション とか、異様なことを言い出した。 sub placeholder_from_array { return join(',',

    配列から効率良くプレースホルダを作る : にぽたん研究所
    pikio
    pikio 2008/12/13
  • MIME::Base64 - base64文字列のエンコードとデコード - perldoc.jp

    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

    pikio
    pikio 2008/07/19
  • Perlの公式ドキュメントを読むための英語の勉強方法 - Perl入門~サンプルコードによるPerl入門~

    Perl入学式 全6回のPerl入門講座。東京、大阪、沖縄、札幌で開催。(東京は4月と10月スタート、それ以外は5月スタート) YAPC::Japan Perlを軸としたITに関わる全ての人のためのカンファレンス。 東京 吉祥寺.pm 五反田.pm 大阪 なにわPerl 沖縄 沖縄.pm

  • Pres Any Key To Continue... 放送中のTV番組をRSSで取得

    pikio
    pikio 2008/05/07