タグ

PerlとIOに関するbigbroのブックマーク (10)

  • perl - 勝手に添削 - Perl入門#1@ITPro : 404 Blog Not Found

    2008年06月03日06:00 カテゴリLightweight Languages perl - 勝手に添削 - Perl入門#1@ITPro さすがに出典が日経Linux 2003年7月号だけあって、少しトウがたってはいるけど、現在でもわずかな修正で使える記事。さすが川合さんといったところか。 第1回 Perlの文法の基ITpro というわけで、この記事の「現代化」Patchを。 全般 use strict;だけではなくuse warnings;も加えましょう。 さらに,調べても分からないことがあれば,メーリング・リストやユーザー・グループ*2に質問してみてもよいでしょう。 blogに書くのもアリです。あと私は使っていないけどIRCとか。 ビルトイン関数は()でくくらない方が視認性が上がります。 before: chomp($sLine); after: chomp $sLine;

    perl - 勝手に添削 - Perl入門#1@ITPro : 404 Blog Not Found
  • Perl 2008年のファイルオープン - てっく煮ブログ

    perl第1回 Perlの文法の基ITpro という記事の はてブコメントを見ていたら、Perl なすごい人達が文句言ってた。 otsune 2006年のhyuki Catalyst記事を載せるのもアレなのに2003年の記事を載せるのは無しだろ……open IN, ...のあたりは有害情報なので全力で見逃せ TAKESAKO ちょw→出典:日経Linux 2003年7月号 125ページより miyagawa 2008年にこの記事はねーよ、と思ったら2003年の記事をいまさら再掲か。なんでわざわざ古い記事を新しいものかのように出して混乱させる?問題があるというソースコードはこんなの。 open IN, '; えー! どこが問題あるのかさっぱり分からん!!!!!!調べてみた2008年流の Perl な書き方を調べるなら perl-users.jp。早速見つけた。oldtype と mode

  • perl - open my $fh, "comand |"; # はモダンじゃない : 404 Blog Not Found

    2009年02月10日01:00 カテゴリLightweight Languages perl - open my $fh, "comand |"; # はモダンじゃない モダンPerl入門 牧大輔 「モダンPerl入門」発売記念ということで、同書を補足するentryを。 同書でちょっと残念だったのが、[5.2 外部コマンドの実行]。あまりモダンではないのだ。 P. 141 system("/sbin/wget", "http://example.com"); これはいいのだが、以下がちょっとまずい。 my $output = `/bin/ls tmp`; open(my $fh, '| cat -v'); これ、何がまずいか、というと、コマンド実行の際に/bin/shを使ってしまうのだ。そのおかげでcommand < from > to 2&>1のようなリダイレクトも使えるなどの利点もあ

    perl - open my $fh, "comand |"; # はモダンじゃない : 404 Blog Not Found
  • ある技術者の備忘録 >> Perlでファイル内容を一括して読み込むには

    Perlではファイルを一括読み込みする場合、よく以下のように書かれます。 open( IN, "<$fileName" ); my @data = <IN>; close(IN); ただ、これだと読み込んだデータが改行で区切られて配列に入ってしまいます。PHPでいうところの file_get_contents みたいに改行も含む文字列として一括して読み込むには、次のようにします。 open( IN, "<$fileName" ); local $/ = undef; my $data = <IN>; close(IN); これは、特殊変数である$/(改行区切り)を一時的に無効にしてから一行分のデータを読み込むということをしています。この改行の無効化により、「一行分のデータ=文末までのデータ」ということになります。

    bigbro
    bigbro 2010/05/15
    一括読み込み
  • 安全にファイルを読み書きする - Perl入門ゼミ

    Perl › ファイル入出力 › here ファイルを読み込んで同じファイルに書き込むときは、読み書きできるオープンモード "+<" を指定して、書き戻すことは非常に危険です。もし書きこんでいる最中にシステムがクラッシュすると、ファイルが破損して復元することができなくなるからです。 安全に書き込みを行うためには、いったん新しいファイルに書き込んでから、ファイル名を元のファイル名に変更することで上書きするようにします。 以下は、安全な読み書きをするためのサンプルです。エラーチェックをしっかり行う必要があります。 use strict; use warnings; # ファイル名を変更するために使用する。 use File::Copy; # 編集して書き戻すので指定するファイルは注意してください。 my $infile = shift; # 一時ファイル。他のプロセスとなるべく # 重ならない

    安全にファイルを読み書きする - Perl入門ゼミ
    bigbro
    bigbro 2010/05/11
  • Perlによるファイルの排他制御を考える flock編 - ぐりにたんく

    Perlでファイルの排他制御を行うにあたり、実運用に耐えるコーディングについて考えます。 今回はflockを用いた排他制御です。 flockは完璧ではない flockによるファイルの排他制御は「ファイルが壊れないようにする」処理ではありません。 「ファイルを壊れにくくする」処理です。 気で壊れたらまずいファイルについては、排他制御を必要としない運用方式や、データベース等の導入を検討すべきです。 マルチスプロセス環境でのflockについて PHPではマルチプロセス環境でのflockに信頼性がありませんが、Perlの場合は気にしなくても良いようです。 ただ、flockがスレッドレベルロック+プロセスレベルロックなのかどうは分かりません。 懸念する点 open関数 open関数は正しく使わないと問題が生じます。 以下の一文は、openを行った際にファイルサイズをゼロ(ファイルを空っぽ)にしてし

    Perlによるファイルの排他制御を考える flock編 - ぐりにたんく
  • ファイルのすべてを飲み込む方法

    原稿を落としたら,すしをおごりにアメリカに行かないといけないとの噂にgkbrしているid:hakobe932です. 932は草津の932です.こんにちは. ファイルの中身をすべて読み込む処理というのは,非常によくある処理です.TIMTOWTDIが信条のPerlでは,ファイルの中身をすべて読み込む方法もたくさんあります.ここでは,どんな方法があるのか見てみましょう. 行単位で読み込む もっともシンプルなのは行入力演算子(<>)を使って行毎にデータを読み込み,それを連結する方法です. open my $fh, '<', './inputfile' or die "failed to open: $!"; my $content = ''; while (my $line = <$fh>) { $content .= $line; } print $content; もう少し工夫して後置whil

    bigbro
    bigbro 2010/01/22
    シンプルにはなるが Perl6::Slurp は遅いのが難点。個人的には $/ が好み
  • ファイルハンドルをめぐる冒険(ただしマニア向け) - daily dayflower

    以下は Perl 5.8.8 のソースを元に記述しました。Perl 5.10 でもそう変わってはいないと思いますが,結構内部が変更されているので違うかもしれません。大まかには同じだと思います。 イントロダクション Perl でのファイルハンドルは内部的には [http://search.cpan.org/perldoc?IO::Handle:title=IO::Handle] オブジェクトとして保持されています。そのような記述は perl5004delta くらいでしか見つかりませんでした。ラクダにもなかったような。 Internal change: FileHandle class based on IO::* classes File handles are now stored internally as type IO::Handle. The FileHandle module

    ファイルハンドルをめぐる冒険(ただしマニア向け) - daily dayflower
    bigbro
    bigbro 2010/01/22
    ファイルハンドル
  • tokuhirom blog

    Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at

    bigbro
    bigbro 2010/01/22
    ファイルハンドル
  • ファイルハンドルの概念を理解する - Perl入門ゼミ

    Perl › ファイル入出力 › here Perlにおけるファイルハンドルの概念はややこしいので、解説しておきます。 ファイルハンドルは実体ではなくて概念的なもの Perlでファイルハンドルといった場合は、Perlがファイルハンドルとして認識する複数の実体のことをいっています。ファイルハンドルという実体があるわけではないのです。 Perlが、ファイルハンドルとして認識するもの シンボル( FH ) 型グロブ( *FH ) 型グロブへのリファレンス( \*FH ) IO::Handleクラスのオブジェクト IO::Handleオブジェクトを継承したクラスのオブジェクト( IO::File など ) Perlが、ファイルハンドルとして認識するものは、上記の5つです。以下の記述はすべて有効です。 # 1. シンボル FH open(FH, "<", $file) or die "$!"; #

    ファイルハンドルの概念を理解する - Perl入門ゼミ
    bigbro
    bigbro 2010/01/22
    ファイルハンドル
  • 1