タグ

ブックマーク / perl-users.jp (8)

  • ファイルのすべてを飲み込む方法

    原稿を落としたら,すしをおごりにアメリカに行かないといけないとの噂に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

    kiyo_hiko
    kiyo_hiko 2018/08/20
    "TIMTOWTDI" / $/
  • ヒアドキュメントの中で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

  • 無名スカラー変数のリファレンス

    my $array_ref = [qw/a b c/]; my $hash_ref = +{1 => 'a', 2 => 'b', 3 => 'c'}; my $code_ref = sub {'a'}; Perlでは、無名配列のリファレンス 無名ハッシュのリファレンス、無名サブルーチンのリファレンスはこのように書けますが、無名スカラーのリファレンスを書く特別な構文はないので、以下のように書きます。 my $scalar_ref = \do {'a'}; これはDamian Conway先生オススメのインサイドアウトオブジェクトのコンストラクタで見られる書き方です。 { package Person; my %props = (); sub new { my $class = shift; $prps{name} = 'John'; bless \do{''}, $class; } sub

    kiyo_hiko
    kiyo_hiko 2012/03/06
    スレチぎみだが無名の配列Copy参照を作る場合「\」ではなく「[]」使えばいい模様。次のコードはゴルフ「my @xs = (3,1,4,1,5,9,2,6); my $copyOfXs = [do{my @ys=@xs}]; $copyOfXs->[2] = 1; sub{print join(', ', @{$_[0]}), "\n"}->($_) for (\@xs, $copyOfXs)
  • Log::Dispatch::Screen::Color で色つきログでデバッグ! - JPerl Advent Calendar 2009

    Log::Dispatch::Screen::Color で色つきログでデバッグ! - JPerl Advent Calendar 2009 Perl に関するちょっとした Tips をのっけてみるよ。ちゃんと続くかな? Log::Dispatch はログの出力先を標準エラーやファイルへの書き込み、メールで飛ばしたり、DBI で DB に突っ込んだり、と Log::Dispatch::* を指定して切り替えられる便利 logger です。 use Log::Dispatch; use Log::Dispatch::File; my $dispatcher = Log::Dispatch->new; # ファイルへの出力 $dispatcher->add( Log::Dispatch::File->new( name => 'file1', min_level => 'debug', fil

  • Perl でお手軽 OpenGL - Articles Advent Calendar 2010 Win32

    みなさま初めましてこんにちは。ハガと申します。 のっけから言うのもナンですが、僕はほとんど Perl を使った事がありません。というかこの前初めて触りました。普段は C++ で OpenGL 関係のプログラムを書いている事が多いのですが、周りには Perl 使いしかいないという状況で、寂しい思いをしております。みんなに C++ を使ってもらうのは無理くさい(というか意味が無い)ので、それならせめて OpenGL を広めてやろう・・・ということで、 Perl でも OpenGL は簡単に扱えるよ!という事をご紹介したいと思います。 そもそも OpenGL って何でしょう Open Graphics Library の略で、三次元の絵を描くための API です。ライブラリって名前だけどライブラリじゃなかったり、オープンって書いてあるけど実装はオープンじゃなかったりと、まぁ色々ありますけど、細か

    Perl でお手軽 OpenGL - Articles Advent Calendar 2010 Win32
  • Test::Moreでテスト事始め - JPerl Advent Calendar 2009

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

  • Win32::GuiTest で Windows の GUI アプリをハックしよう

    的な書き方 use strict; use warnings; use utf8; # ↑ Perl ハッカーに DIS られなくなるおまじない # Win32::GuiTest を使うおまじない use Win32::GuiTest qw(:ALL); # 日語を使えるようにするおまじない UnicodeSemantics(1); # ここで Win32::GuiTest を使う マウスを動かす use strict; use warnings; use utf8; use Win32::GuiTest qw(:ALL); # 小数点もいけちゃう sleep 関数 use Time::HiRes qw(sleep); UnicodeSemantics(1); for (my $i = 0; $i < 500; $i++) { # 10 ms 待つ sleep(0.01); # マウ

    kiyo_hiko
    kiyo_hiko 2011/10/08
    UWSCみたいなことができそう
  • reduce だいすき

    デミグラスソース使った料理べたい cho45 です。Perl といえば某MMOゲームと同時に起動できないプログラムとして有名ですが今回はそれとは関係ない話です。 Ruby 厨の多くが inject 厨である気がします (てきとーです) が、 Perl で List::Util::reduce を使っているところをあんまり見たことがないのでいくつか便利な例を紹介します。 reduce は何かというとリストを1つの値に纏めるものです。例えばリストの要素の合計は use Perl6::Say; use List::Util qw/reduce/; my $list = [1, 2, 3, 4, 5]; say reduce { say "$a,$b"; $a + $b } @$list; 1,2 3,3 6,4 10,5 15 前回のループの返り値が $a に入り、$b には残りの要素

    kiyo_hiko
    kiyo_hiko 2011/09/24
    reduce/foldってmap/mapcarとかgrep/remove-if-notとかと比べるとまだ慣れない。使いこなせればめちゃめちゃコードが楽に書けそうな気はするのだがなあ。てかreduceがコアモジュールに入ってたのに驚いた。是非使わねば。
  • 1