タグ

Perlに関するakaneharaのブックマーク (108)

  • ヒアドキュメントの中で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

    akanehara
    akanehara 2017/06/20
    [文字列展開]
  • Perl メモリ開放うんぬん - てきとーにやる

    今日、メモリ開放周りで詰まったので覚書。 100M程度のデータを変数に入れてゴリゴリやる際に スコープから外れたのに開放されねーよ、という事態に陥ったので。 メモリ使用量はpsなりタスクマネージャなりで確認した。 create_scar(); sleep; sub create_scar { my $scar; $scar .= " " for ( 1.. 1000000 ); } 例えば、↑だとメモリいっぱなし sub create_scar { my $scar; $scar .= " " for ( 1.. 1000000 ); undef $scar; } ↑undefすれば開放。あたりまえか。 create_scar(); create_scar(); sleep; sub create_scar { my $scar; $scar .= " " for ( 1.. 10000

  • Perlが初めての人に教えてあげたいちょっとしたこと - Unknown::Programming

    タイトルは釣りです。 実際のタイトルは「Perlのオブジェクト指向がムズカシイだって?んなバカな。だったらPHPで再現してやんよ!」でございます。 ヘイヘイヘイ。そこの君。Perlのオブジェクト指向が難しいだなんていったい誰が言ったんだい? Perlのオブジェクト指向ほど、シンプル且つ柔軟なものはないよ! 単なるパッケージ(名前空間)とリファレンス(データ)をblessという関数で紐付けただけのもなんだから。 第一引数に必ず$selfが来るっていうのも結局の話たんなる関数呼び出しとなんら変わらないのだから。 package Foo; sub new { my $class = shift; return bless { @_ } , ref $class || $class; } sub plus { my $self = shift; my $int = shift; return $s

    Perlが初めての人に教えてあげたいちょっとしたこと - Unknown::Programming
  • YAPC::Kansai 2017 OSAKA

    YAPC::Kansai 2017 OSAKA 03/03 前夜祭 前夜祭参加チケット 完売御礼 YAPC::Kansai 2017 OSAKA 03/04 一般・学生チケット(Tシャツつき) 完売御礼 個人スポンサーチケット 完売御礼 YAPC::Kansai 2017 OSAKA 03/04 懇親会 一般・学生チケット 完売御礼 竹迫 良範 広島県出身。Shibuya.pm二代目リーダー。ppencodeの作者。2003年「mod_perlにおけるC10K Problem」で発表者デビュー。 日初のYAPC::Asia Tokyo 2006を立ち上げたメンバーの一人。 大学卒業後、独立系ITベンチャーにて大企業向けmod_perl製品開発とi18n(国際化)を担当。その後、上京し、セキュリティ研究開発の傍ら、エンジニア採用、産学官連携と日の若手IT人材育成に関わる。 現在は大手企業

    YAPC::Kansai 2017 OSAKA
  • Go For Perl Mongers

    Go For Perl Mongers (or, for Lightweight Language lovers) Daisuke Maki Engineer, LINE Corporation Who Is This Guy? @lestrrat LINE / Japan Perl Association / YAPC::Asia (2008~2013) STF / peco (new!) 2 俺とGo Goしてみて約1年弱 概算10~12万行くらい書いた。lived○○rBl○g の裏方にもこっそりgo入れてる 最初の4万行くらいまでに goの落とし穴にほぼ全て落ちた 自信がある 今日はその落とし穴から学んだ諸々の話 3 対象観客層 もともとPerl/Python/Ruby/PHPあたりから来た人 Goは最低限とりあえずかじった程度はやった人 かじってみたけど「Go、便利そうだけどなん

  • Perlでコマンドラインオプションの解析に Getopt::Long を使う時、絶対に忘れてはいけない引数 - たごもりすメモ

    Perlでコマンドラインオプションをparseしようと思うと組込みモジュールとしては Getopt::Std と Getopt::Long がある。が、long style option *1 つまり --option-name のようなオプションを解釈してくれるのは Getopt::Long だけだ。なので普通はこちらを使おう。 ただし 絶対にデフォルト、つまり以下のようにして使ってはいけない。 use Getopt::Long; my (@primary, @secondary, $silent); GetOptions( "server-primary|p=s" => \@primary, "server-secondary|s=s" => \@secondary, "silent|S" => \$silent ); これダメ! 絶対ダメ! 死ぬ! 最初に結論を書く 必ず以下のように

    Perlでコマンドラインオプションの解析に Getopt::Long を使う時、絶対に忘れてはいけない引数 - たごもりすメモ
  • APIをPerlで作る時に 僕達が考えたこと

  • Perl のグローバル変数 $a と $b の詳解 - Qiita

    先日「Perl のグローバル変数やレキシカル変数について - Qiita」という記事を書きました。 グローバル変数がパッケージと紐付いているという話までくると、型グロブといったリファレンス前夜の Perl 4 の時代に行われていたグローバル変数によるプログラミング手法まで話が広がるのですが、少々長くなりすぎることもあり、以前の記事はあの分量に収めました。 型グロブの詳解も含めた一般的な Perl のグローバル変数についてのお話はいつかするとして、グローバル変数という話で忘れられないのは sort 関数で使われる $a $b という変数です。この記事では sort 関数の基礎や $a と $b の正体を解明しつつ、sort 関数のような $a と $b を受け取って何かするブロックを伴うような関数を自作する方法を解説します。 sort 関数と $a と $b (※ sort のブロックについ

    Perl のグローバル変数 $a と $b の詳解 - Qiita
  • 正規表現(肯定先読み、否定先読み、肯定戻り読み、否定戻り読み) - satosystemsの日記

    自分のためにメモ。 (肯定|否定)(先読み|戻り読み)、覚えづらい。 正規表現 パターン(boost::regex) 説明 肯定先読み (?=regex) regex に一致する文字列が始まる位置にある検索文字列と一致する。一致した文字列は記憶されず、後で使用することはできない。 たとえば "Windows (?=95|98|NT|2000)" は、"Windows 2000" の "Windows" には一致するが、"Windows 3.1" の "Windows" には一致しない。 先読み処理では、読み進まれた文字は処理済みとは見なされない。一致の検出後、次の検索処理は先読みされた文字列の後からではなく、一致文字列のすぐ後から開始される。 否定先読み (?!regex) regex に一致しない文字列が始まる位置にある検索文字列と一致する。一致した文字列は記憶されず、後で使用することは

    正規表現(肯定先読み、否定先読み、肯定戻り読み、否定戻り読み) - satosystemsの日記
  • awkユーザーのためのPerlワンライナー - 忘れないようにメモっとく

    awk(と他のコマンド)ユーザーがPerlワンライナーを覚えるとうれしいこと↓↓ -aオプションでawkと似たような書き方ができる(awkとの比較を参考) カラム1とカラム2を表示 awk '{print $1, $2}' perl -waln -e 'print $F[0], $F[1]' awkよりperlの方が速い場合がある 例えば-aオプションを使わないとき、$F[0]などをレコードごとに生成しないのでperlの方が速く実行できる場合がある(awkはレコードごとに$1などを生成する) awk 'BEGIN{sum=0};{sum+=1};END{print sum}' file.txt perl -wln -e 'BEGIN{my $sum=0}{$sum+=1}END{print $sum}' file.txt 正規表現をperlだけ覚えればいい(awk, sed, grepのコ

    awkユーザーのためのPerlワンライナー - 忘れないようにメモっとく
  • Perlでオブジェクト指向プログラミング - Perl入門ゼミ

    Perl › オブジェクト指向 Perlのオブジェクト指向プログラミングに関する解説です。オブジェクトの作成、コンストラクタ、継承、ポリモーフィズムなど。オブジェクト指向に関する関数についても解説。 入門記事 Perlオブジェクト指向入門【重要】 Object::Simple - 簡単すぎるクラスビルダー、Mojo::Baseの移植、速くて省メモリ オブジェクト指向の仕組み オブジェクトの生成 - bless関数 オブジェクト指向プログラミングとは 「もの型」オブジェクトと「ひと型」オブジェクト クラスの作成 コンストラクタの作成 生成したオブジェクトをいじって遊ぶ コンストラクタに引数を渡せるようにする 汎用的なコンストラクタの雛形 アクセサを生成する クラスの雛形 継承とは クラスを継承する Perlの継承の仕組み baseモジュールを使ってクラスを継承する 継承を使ったポリモーフィズ

    Perlでオブジェクト指向プログラミング - Perl入門ゼミ
  • 時間のかかる処理を捕捉する ALRM シグナル - Qiita

    時間のかかる処理を実行したいんだけど、ある程度の時間が経過したらタイムアウトしたいという要望に応えるために ALRM シグナルというものがあります。 例えば シンプルなライブラリで通信したいんだけど、長時間かかる場合はタイムアウトして欲しい ウェブサーバなどでユーザのリクエスト内容を元に DNS 問い合わせをしたいんだけど、1秒(1000ミリ秒)以上かかったらタイムアウトさせたい バッチプログラムがいつまでも終わらなくて I/O でささっているっぽいんだけど、どこでささっているのか調査したい ささっている系調査は、プログラミング言語のデバッガや strace なども併用するとよいです n分おきに起動する cron プログラムなんだけど、処理するデータが多すぎてn分でおは終わらない場合には終了させないといけない(終了したら次の cron で起こされるプログラムが担当してくれるのでむしろそれで

    時間のかかる処理を捕捉する ALRM シグナル - Qiita
  • はてなブログ | 無料ブログを作成しよう

    来年も作りたい!ふきのとう料理を満喫した 2024年春の記録 春は自炊が楽しい季節 1年の中で最も自炊が楽しい季節は春だと思う。スーパーの棚にやわらかな色合いの野菜が並ぶと自然とこころが弾む。 中でもときめくのは山菜だ。早いと2月下旬ごろから並び始めるそれは、タラの芽、ふきのとうと続き、桜の頃にはうるい、ウド、こ…

    はてなブログ | 無料ブログを作成しよう
  • Perlのオブジェクト指向をつかんだ - the code to rock

    経緯 概念 実例 参考書籍 まとめ・展望 経緯 2013年の春にふと「よし、プログラミングやろう」と決めてその夏にYAPC::Asiaに参加して、その直後に買ったのが以下の。 すぐわかる オブジェクト指向 Perl 作者: 深沢千尋出版社/メーカー: 技術評論社発売日: 2008/06/20メディア: 大型購入: 12人 クリック: 195回この商品を含むブログ (34件) を見るたしか同YAPCでDeNAの人が大規模新人研修に関する発表をしていて(→)、その最後のほうでお勧め入門書ベスト5みたいなやつを紹介していたのだけど、それがよくある特定の選者が一括で選ぶようなものではなく、研修を受けた側の新人さんたちに聞いたアンケートから抽出されたというリアルなもので、そこに含まれているのを見て興味を持った。 で、先日ようやくそれを読み終わって出た感想。 Perl5によるオブジェクト指向、よう

    Perlのオブジェクト指向をつかんだ - the code to rock
  • オフラインでCPANを使う方法 (2種類) - Qiita

    CPANに接続できなくてもCPANモジュールをインストールする方法を2つ説明。 次のケースで便利。 外部から隔離されたサーバー 山奥や飛行機の上など、ネットにつながらないとき。 手段は2種類。 CPAN::Miniを使ってCPANミラーを作る (オススメ) CPANにあるものなら何でもインストールできる。 簡単。依存関係に悩まされない。 ストレージの容量が必要。(2013年3月時点では2.4G必要) cpanのキャッシュを利用する 一つ目に比べて必要最低限の容量ですむ。持ち運びしやすい。 依存関係ではまる場合もある。 これらの方法は、既にネットにたくさん書かれていますが、自習、確認のためにも投稿。 CPAN::Miniを使ってCPANミラーを作る 流れとして、CPAN::Miniをインストール、CPANミラーを作成、cpanのダウンロード先にローカルのミラーを追加。以上。 実行例

    オフラインでCPANを使う方法 (2種類) - Qiita
  • IO::Select - OO interface to the select system call - Perldoc Browser

  • PSGIアプリでWebSocketを使う場合、responderはどうすべきか? - DebugIto's diary

    Plack::App::WebSocketを実装していて、「PSGIのresponderをどう扱うべきか?」に悩みました。 Plack::App::WebSocketは内部で以下のようなことをしています。 my $env = shift; my $fh = $env->{"psgix.io"}; return sub { my $responder = shift; ... # WebSocket communication on $fh }; PSGI拡張仕様で定義されている"psgix.io"から生ソケットを取り出し、あとはモジュール側で勝手にWebSocket通信をする、といった具合です。Amon2::Plugin::Web::WebSocketやPocketIOもこういった実装になっています。 しかしここで、$responderはどうすればいいでしょうか? $responderをコ

    PSGIアプリでWebSocketを使う場合、responderはどうすべきか? - DebugIto's diary
  • AnyEvent のタイマーを自由自在に操る - Qiita

    AnyEvent とは AnyEvent とは、Perl のイベント駆動フレームワークです。ウェブ開発エンジニアにも JavaScript などですっかりおなじみになったイベント駆動を包括的に扱うことができます。 詳しくは別の資料や記事に譲りますが、AnyEvent では標準で以下の様なイベントに対応しています。 時間を基準としたタイマー I/O 発生によるフック 子プロセスの終了 非同期ネットワークI/O シグナルハンドラ これらを使って、以下の様な応用モジュールが CPAN でたくさん公開されています。 非同期HTTPクライアント IRCなどのチャット系ボット作成支援モジュール ファイル更新通知 非同期版DBI このあたりについても詳しく書きたいのですが、AnyEvent 自体の歴史も長いことで(それがゆえに今では古い情報がたくさん残るという状況もあるのですが)資料が多いので、まずは検

    AnyEvent のタイマーを自由自在に操る - Qiita
  • Perlだけじゃない!Lobiのサーバーサイドで活躍しているGo製プロダクト7+1個 - KAYAC engineers' blog

    Lobiはメインの言語としてPerlを採用しています。 サーバーサイドで使用するコードは、Webアプリケーションから手動実行用のスクリプトまで、 ほとんどがPerlで書かれています。 (なぜかPerl6のコードがあることになっていますが、さすがにまだ使ってません) が、そこは適材適所。 Goの方が適していると判断した部分では積極的に利用しています。 Goの使いどころ 単機能を高いパフォーマンスで実現する必要がある場合はGoの出番です。 バイナリひとつを配置すれば動作するというポータビリティも魅力的です。 これらのツール・アプリは単独で実行され、一部はアプリケーションの要求に応じてその機能を提供します。 spam-filter maintainer gunfish katsubushi stretcher rin fluent-agent-hydra nuko それでは各ツール・アプリについ

  • 長岡 IT開発者 勉強会(NDS) 46回で「雑Perl」という話をしてきました #nds46 - Re.Ra.Ku tech blog

    リラクヘルステック室の丸山です。 タイトルにある通り、2/20日に開催されたNDS46回で雑Perlというタイトルで発表をしてきました。リラク自体は関東に拠点を置く企業ですが、NDSは新潟県長岡市を拠点とした勉強会です。リラク自体が新潟と関連があるわけではないのですが、わたしが新潟とつながりが深く、そんな縁で今回は参加してきました。 わたしの発表内容 今回のテーマは「スクリプト言語」でした。弊社ではサーバーサイドのアプリケーションは基的にScala、iOS向けアプリケーションはSwift/Objective-Cで書かれており、スクリプト言語がコアに使われているわけではないのですが、「雑にぱぱっとやっちゃいたい」みたいなときや、あるいは日々の運用などではRubyPerlがよく使われています。そんなわけで、今回わたしは「雑Perl」というタイトルで、「雑にぱぱっとやる」ってときにPerl

    長岡 IT開発者 勉強会(NDS) 46回で「雑Perl」という話をしてきました #nds46 - Re.Ra.Ku tech blog