タグ

関連タグで絞り込む (0)

  • 関連タグはありません

タグの絞り込みを解除

Programmingとperlとprogrammingに関するpipeheadのブックマーク (217)

  • daily dayflower - 半角←→全角変換,Unicode::Japanese に未公開機能が…

    2008-10-21 追記 いまだに(ありがたいことですが)検索で飛んできたりブクマされたりというのがちょいちょいあるので,最新動向を書いておきます。 id:tokuhirom さんが Lingua::JA::Regular::Unicode という Pure Perl Module をリリースなさいました(→ http://d.hatena.ne.jp/tokuhirom/20081018/1224300947)。 あなたが作っているアプリで文字列まわりを Unicode::Japanese インスタンスですべて持ちたいわけでなければ(そして,たいていのばあい,持つ必要はないのですが),この Lingua::JA::Regular::Unicode を使うのがベターです。依存性もなく,とても軽量ですので。 2008-10-21 追記おわり ウェブアプリを作っていると,ユーザが入力した半角

    daily dayflower - 半角←→全角変換,Unicode::Japanese に未公開機能が…
  • Perlで出力のバッファリングを無効にするには

    2006年5月27日(土) 00時00分00秒 [Perl/CGI] Perlで出力のバッファリングを無効にするには てっどさんからのネタで、てっどさんが自力で解決した話ですけど(笑)、勉強になったのでメモ。^^; Perlの標準出力はバッファリングされてます。改行「\n」を出力すれば標準出力に出力されますけども、「\n」を出さなければプログラムが終了するまで一切出力されません。 たいていの場合はそれで問題ないと思うのですが、コンソールで何か進行状況を表示させたいとき、「\r」を使って一旦出力した文字を書き直したいと思うこともあるでしょう。例えば、「/」→「|」→「\」→「-」→「/」…のように棒をくるくる回転させたいとか。(笑) そんなときは、バッファリングをしないようにPerlに指示する必要があります。デフォルトではバッファリングされるので、改行を出力しない限り標準出力には何も出力され

    Perlで出力のバッファリングを無効にするには
  • ハッシュを deep merge してくれる Hash::Merge - daily dayflower

    2 つのハッシュをマージしたいとき,単純には下記のような方法で動きます。 my %a = ( key1 => 'value_a1', key2 => 'value_a2', ); my %b = ( key1 => 'value_b1', key3 => 'value_b3', ); my %c = (%a, %b); # %c is: # key1 => 'value_b1' # override # key2 => 'value_a2' # key3 => 'value_b3' # mergeというのも,そもそも, my %a = ( key1 => 'value1', key1 => 'value2', key1 => 'value3', ); # %a is ( key1 => 'value3' )代入もとの配列に同じキーがあっても上書きしてくれるからです。 でも, my %a =

    ハッシュを deep merge してくれる Hash::Merge - daily dayflower
  • 引数の型によって処理分けする関数の定義 - Unknown::Programming

    折角だしPHPのお話でも。 たとえばPerlで下記のような仕様のsum関数を作るとする。 print sum(1,2,3,4); # 10 print sum([1,2,3,4]); # 10 引数がリストならそれらを全て合計して返す。 引数が配列のリファレンスなら配列のリファレンスの中身を合計して返す。 つまり引数の型によって処理分けをするような関数ですね。 これをPerlで書くと、 sub sum { my @param = ref $_[0] eq 'ARRAY' ? @{+shift} : @_; my $sum = 0; foreach my $n (@param) { $sum += $n; } return $sum; } まぁだいたいこんな感じですね。 これをPHPでやるとすると普通の引数の受け取り方だと無理なのでfunc_get_arg関数やfunc_get_args関数

    引数の型によって処理分けする関数の定義 - Unknown::Programming
  • Perlで必須の記述 use strict と use warnings

    2006年5月22日(月) 14時43分13秒 [Perl/CGI] Perlで必須の記述 use strict と use warnings Perlはずいぶん柔軟性の高い言語だと思います。それがメリットにもなったりデメリットにもなったりするわけで、また、書きやすかったり難しかったりするわけですが。そんなPerlでプログラムを書く上で、とりあえず記述しておくべき2行があります。 use strict; use warnings; 最近は私も、Perlで何か書くときには必ず上記の2行を加えているのですけど、昔はこんなもん知らなかったので(^^;)、当サイト上で公開しているスケジュールCGIには、そんな記述は存在しません…。^^;;; 修正したいとは思うのですけどね。ずいぶんスパゲッティーなプログラムになっているので、全体を修正するのがなかなか大変。 「動きさえすればいい」と思っていたわけで

    Perlで必須の記述 use strict と use warnings
  • Perl の Storable モジュールのメモ

    Perl の Storable モジュールのメモ 2006-05-09-2 [Programming] Perl の Storable モジュールでちょっとだけ複雑なデータを扱うときの自分用 SYNOPSIS。参考「続・初めての Perl」[2006-05-09-1]。 #!/usr/bin/perl use strict; use warnings; use Storable qw(nstore retrieve); my ($first, $second); $first->{uhyo} = { 'abc' => 123, 'xyz' => 9, }; $first->{hogera} = { 'AAAAA' => [1, 2, 3], 'ABCDEF' => [60,1], 'W002' => [9, 1, 2], }; test_print($first); nstore [ $f

    Perl の Storable モジュールのメモ
  • Perl 5.8 と UNICODE - daily dayflower

    http://www.pure.ne.jp/~learner/program/Perl_unicode.html やnaoya 氏の記事でいいつくされているのですが,最近はまっていることがあるので現在の進捗をメモっておきます。 Perl 5.8 以降の文字列スカラーの内部表現 いわゆる UTF-8 ビットがたっているかいないか,また,実際にワイド文字として区切られているかどうか。個別に設定はできるけれど混乱の元になるので,対になっていると思っていればいいです。 my $text = '日語'; # $text == "\x{e6} \x{97} \x{a5} \x{e6} \x{9c} \x{ac} \x{e8} \x{aa} \x{9e}"; # 文字列リテラルは『バイト列』 # utf8::is_utf8($text) == trueUTF-8 表記は,ワイド文字は \x{80} 以

    Perl 5.8 と UNICODE - daily dayflower
  • 19990701 -> 1999/07/01 - Unknown::Programming

  • Perl の例外処理 - daily dayflower

    Catalyst で action を遷移する場合は,コンテキストオブジェクトの forward() メソッドを使うのが一般的だと思いますが,同じような役割のメソッドとして detach() というのもあります。違いは,forward() は遷移先から return 等で戻ってくるのに対し,detach() は遷移しっぱなしです。 sub act1 : Private { my ($self, $c) = @_; $c->forward('act9'); # ファイナライズとかやります? } sub act2 : Private { my ($self, $c) = @_; $c->detach('act9'); # ここにはもうきません }エラー時やリダイレクト時に,遷移元の記述がスマートになりますね。 この「サブルーチンとして呼び出したのに戻ってこない」ってどのように実装しているのだろ

    Perl の例外処理 - daily dayflower
  • 数値変換のまとめ - Unknown::Programming

    10->16進数、16->10進数とか良く忘れるのでまとめときまする。 それっぽいモジュールでも作ってみた。 CPANにこんなの無いかなぁ? package Pack; use strict; # 16進数→バイナリ sub p16toBinary { my $class = shift; pack('H*', join '' , @_); } # 16進数→10進数 sub p16to10 { my $class = shift; join( '' , map hex , @_); } # 16進数→8進数 sub p16to8 { my $class = shift; sprintf('%o' x @_, map hex , @_); } # 16進数→2進数(昇ビット順) sub p16to2Asc { unpack('b*' , shift->p16toBinary(@_) );

    数値変換のまとめ - Unknown::Programming
  • Windows版 ActivePerl 5.8.X 日本語テキストファイルの操作

    前回の続き、結論から言うと、とりあえず、Windows 版 ActivePerl 5.8.X でシフトJISの日語テキストファイルを操作するときは、次のように宣言したほうがいいということ。 use encoding "shiftjis"; use open ":encoding(shiftjis)"; use open ":std"; map{ binmode($_,":crlf"); } qw/STDIN STDOUT STDERR/; 1行目、use encoding "shiftjis"; --- テキストファイルの中でシフトJISを使うという宣言。そして、標準入出力もシフトJISになる。 2行目、use open ":encoding(shiftjis)"; --- オープンするファイルのデフォルトのエンコードの宣言。つまり、シフトJISとして扱う。 3行目、use open "

  • Windows版 ActivePerl 5.8.X で日本語テキストファイルの標準入出力

    前に、「Windows版 ActivePerl 5.8.X で日語処理をする」でencodingプラグマについて触れた。しかし、この機能には小さなバグがあった。Perl 5.8.7/5.8.8で確認しているので、それ以前のバージョンで発生すると思われる。 たとえば、次のように宣言する。use encoding "shiftjis";こうすると、Perlの次のような動作になる。 ソースファイルはシフトJISコードで扱う 内部コードはUTF-8を使用する 標準入力(STDIN)からシフトJISコードをUTF-8に変換して読み込む 標準出力(STDOUT)へUTF-8をシフトJISコードに変換して書き込む 果たして当にそうなっているのか? 次のプログラムをtest1.plとして保存して、perl test1.pl 実行してみると、STDIN,STDOUT,STDERRのそれぞれのファイルハン

    Windows版 ActivePerl 5.8.X で日本語テキストファイルの標準入出力
  • ウェブリブログ:サービスは終了しました。

    「ウェブリブログ」は 2023年1月31日 をもちましてサービス提供を終了いたしました。 2004年3月のサービス開始より19年近くもの間、沢山の皆さまにご愛用いただきましたことを心よりお礼申し上げます。今後とも、BIGLOBEをご愛顧賜りますよう、よろしくお願い申し上げます。 ※引っ越し先ブログへのリダイレクトサービスは2024年1月31日で終了いたしました。 BIGLOBEのサービス一覧

    ウェブリブログ:サービスは終了しました。
  • ウェブリブログ:サービスは終了しました。

    「ウェブリブログ」は 2023年1月31日 をもちましてサービス提供を終了いたしました。 2004年3月のサービス開始より19年近くもの間、沢山の皆さまにご愛用いただきましたことを心よりお礼申し上げます。今後とも、BIGLOBEをご愛顧賜りますよう、よろしくお願い申し上げます。 ※引っ越し先ブログへのリダイレクトサービスは2024年1月31日で終了いたしました。 BIGLOBEのサービス一覧

    ウェブリブログ:サービスは終了しました。
  • 続・コマンドライン用クリップボードツールを作ってみた(Active Perl編)

    Microsoft Visual C++ Express Edition で clp というコマンドライン用クリップボードツールを作った。しかし、VC++ Express Edition の場合、EXEファイルをコピーするだけでは実行できないことがわかった。DLLが必要なのである。しかも、ただコピーすればいいだけということではない。その件は、いつか体力のあるときに書くことにして、たいしたことないので、clp を Active Perl で書き直した。使い方は前回の記事( https://hardsofttalk.seesaa.net/article/200603article_2.html )と同じ。 clp.pl の内容は、こんな感じ。 use strict; use Win32::Clipboard; my $option = shift; my $clip = Win32::Clip

    pipehead
    pipehead 2006/03/17
    Win32::Clipboard
  • Perl5.8 の UNICODE 対応

    perl は 5.8 から Unicode(utf-8) がサポートされました.5.6 でも Unicode に対応はしていましたが,ぜんぜん使い物にならず,ようやく 5.8 でまともに使えるようになったということです.ただせっかく使えるにもかか わらず perldoc などを見てもイマイチ使い方がわからないので,独自にまと めてみたのがこのページです. 誤った書き方や勘違いをしてい ることもあるので,形式的ですがこのページの内容は無保証です. 内容 文字コード変換 perlIO jperlからの移行 UTF-8フラグ 文字コード自動判別 Unicode Standard Unicode 正規化 その他 参考資料 文字コード変換 とりあえず perl5.8 で新しく組み込まれた機能を見るために,euc-jp から shift_jis への変換スクリプトをいくつか載せます. openを利用し

  • $/ - unknownplace.org

    perldoc perlvar みてたら、$/ とかみっけ。これが undef だとファイルハンドルは slurp モードになるらしい。 my $stdin = join '', <STDIN>; を my $stdin; { local $/; $stdin = <STDIN>; } ほー

  • Exportを無効にしませう。 - Unknown::Programming

  • マッチングでエラー「Unmatched [ in regex; marked by~」

    2006年2月 8日(水) 17時13分31秒 [Perl/CGI] マッチングでエラー「Unmatched [ in regex; marked by~」 正規表現を使ったマッチングで、「Unmatched [ in regex; marked by~」という謎のエラーメッセージが出てしまうことがあります。これは、マッチング対象の日語文字列の文字コードがSHIFT-JISだった場合に発生します。この問題を解決するには、問題のある文字の前に「\」を付けるか、文字コードをUnicodeなどに変えてから処理を行う必要があります。 WindowsではSHIFT-JISが標準だし、UTF-8Netscape4が読まないし…という感じで、CGIの文字コードは大抵SHIFT-JISで作ってるんですけども、SHIFT-JISの問題でまた煮詰まりました。(^^;;; 正規表現で文字列の比較を行ってる箇

    マッチングでエラー「Unmatched [ in regex; marked by~」
  • イケてないプログラム(使えない成果物)に見られる3つの共通点

    クイックソートの話で書いたとおり、相変わらず Excel - VBA と格闘する日々が続いております・・・orz 「大企業にありがちな問題。委託開発の甘い罠・・・」でも書いたとおり、今まで外注して作ったソフトウェアってほぼ 100% の確率でイケていないものが完成してます。年末に納品されたソフトウェアのできも酷いの何のって・・・ さて、いままで見てきたイケてないプログラムのダメソースに共通して言えることが3点ありまして、 DRY ( Don’t Repeat Yourself ) でない。同じもしくは似たソースのコピペが至る所に散在する。 ロジックに無駄が多すぎ。行き当たりばったりで作った感、満点。 アルゴリズム知らなさすぎ。馬鹿ループ処理で時間かかりすぎ。 のいずれか、もしくは全部が当てはまります。大抵は全部ですね。こういったソースが納品されると、センス無いなぁ〜と思っちゃうわけ。こうい

    pipehead
    pipehead 2006/01/26
    順列, 組み合わせ