タグ

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

  • Mojolicious::Liteでウェブツールを作ろう - Articles Advent Calendar 2011 Casual

    こんにちは、memememomoです。ゆるふわと聞いたので勢いで参加しました。 最近はPHPをメインで書いていて、perlは補助ツールなどを作るときに使っています。なので当にゆるふわにperlを使っています。 perlはいいですよね。便利なモジュールがたくさんあるので、サクッとスクリプトが書けてしまいます。 自分の場合、スクリプトは一つのファイルでパパッと書いちゃうことが多いです。 今回ご紹介するMojolicious::Liteは、一つのファイルにウェブアプリを書くことができるフレームワークです。 インストール Mojolicious::Liteのインストールは簡単です。 $ sudo sh -c "curl -L cpanmin.us | perl - Mojolicious" これだけです。perlbrew環境ならsudoも要りませんね。 アプリの記述 おもむろにエディタを立ち上げ

    Mojolicious::Liteでウェブツールを作ろう - Articles Advent Calendar 2011 Casual
  • Scalar::Util::blessedでblessされちゃった判定するよ! - Articles Advent Calendar 2012 Casual

    カジュアルと言えば、Hokkaido.pm Casual#8が開催されたばっかりなので、どんな感じのことをやってるか少しだけ紹介しますね! #8で扱ったのは「モジュール定義入門」ということで、Perlでクラス定義とかオブジェクトの生成とかどうやるの?って内容で開催しました。 package Foo; use strict; use warnings; sub new { my $class = shift; return bless {}, $class; } package Bar; use strict; use warnings; sub new { my $class = shift; return bless {}, 'NotBar'; } package main; use strict; use warnings; use feature 'say'; my $foo = F

    Scalar::Util::blessedでblessされちゃった判定するよ! - Articles Advent Calendar 2012 Casual
    michael-unltd
    michael-unltd 2016/09/29
    “use Scalar::Util 'blessed';”
  • #08 search - Articles Advent Calendar 2011 Teng

    今日はsearchメソッドを紹介します。 まず、searchメソッドはsingleのようにPRIMARY KEYで1行取得するわけではないが、 そんなに複雑じゃない場合に利用するといいと思います。 my $itr = $teng->search('user', +{name => 'nekokak'}, +{order_by => 'id'}); # SELECT * FROM user WHERE name = 'nekokak' ORDER BY id; のように利用します。 こうすることでnameがnekokakな人をまとめて取得しイテレータ経由でレコードにアクセス出来るようになります。 また、第三引数にオプションを指定でき、ORDER BYなどを指定すことが可能です。 LIMIT / OFFSETを指定したい場合は my $itr = $teng->search('user', +

    #08 search - Articles Advent Calendar 2011 Teng
    michael-unltd
    michael-unltd 2016/05/25
    実行結果はIteratorまたは配列で取得可能
  • DBIx::QueryLog で DBI で実行された SQL を丸見えにする! - Articles Advent Calendar 2011 Dbix

    こんにちは、最近 PSP1000 の電池が一瞬で切れてしまってまともにゲームができない xaicron です。 さて、みなさんは DBI から吐かれた SQL をみたいなーと思うこともあるでしょう。 そんな時は、$ENV{DBI_TRACE} = 2 とかしてみると、ドバーッといっぱいデバッグログが出てきて、 その中に実際に発行された SQL がちょろっと出てたりするのでこいつを頑張ってパースすればいい感じですね! っていうのはだいぶ面倒だったりしますね。あたりまえですね。 そこで、use するだけでとりあえず全部の発行された SQL を STDERR にはいてくれるモジュールを書きました。 その名も DBIx::QueryLog です。そのままですね。 つかいかた 使い方は至極簡単で、どっかで適当に use するだけです。ほかには何もいりません。 そうすると、以下のような感じで STDE

    DBIx::QueryLog で DBI で実行された SQL を丸見えにする! - Articles Advent Calendar 2011 Dbix
    michael-unltd
    michael-unltd 2016/05/17
    “use DBIx::QueryLog;”
  • proveをうまく使ってテスト実行を効率化しよう - Articles Advent Calendar 2010 Casual

    こん(にちは|ばんは).最近は卒論でC/アセンブラ,アルバイトでPerl/Objective-Cと高低レイヤーを行ったり来たりなyaottiです. このエントリでは,テストを実行する時に便利なproveコマンド(App::Prove)の便利な機能+αについて紹介します. 基的な使い方 prove t/foo.t のようにして使います.perlと同じように-lや-Idir,-v, -MModule::Nameなども使えます. prove -l -Ilib -v t/foo.t 他にも,-Pオプションでプラグインを利用することもできます. 例えばmotemenさんの書いたApp::Prove::Plugin::ProgressBar::Eachは大量のテストを実行するときに便利です. cpanm https://github.com/motemen/App-Prove-Plugin-Prog

    proveをうまく使ってテスト実行を効率化しよう - Articles Advent Calendar 2010 Casual
  • #10 Rowクラスの拡張方法 - Articles Advent Calendar 2011 Teng

    Tengでdatabaseからデータを取得すると、基的には各レコードはTeng::Rowのオブジェクトになって返されます。 my $row = $teng->single('user', +{id => 1}); この時点の$rowはProj::DB::Row::Userというクラスでインスタンス化されています。 しかし今までの説明でProj::DB::Row::Userを定義したことはありませんでした。 Tengではtableに対応するRowクラスを自動的に生成し、利用します。 例えばこのProj::DB::Row::Userというクラスにメソッドを追加したいとします。 その場合は単純に自分でそのクラスを定義するだけです。 package Proj::DB::Row::User; use strict; use warnings; use parent 'Teng::Row'; sub

    #10 Rowクラスの拡張方法 - Articles Advent Calendar 2011 Teng
    michael-unltd
    michael-unltd 2016/04/19
    “このProj::DB::Row::Userというクラスにメソッドを追加したいとします。その場合は単純に自分でそのクラスを定義するだけです。”
  • 配列操作をカジュアルに - Articles Advent Calendar 2011 Casual

    こんにちは。新潟在住Perl人、neko_gata_sです。AdventCalendarの敷居を下げにきました。ものっそいカジュアルな話をします。今日はList::Utilについて書こうと思います。 どちらが良いコード? さて、いきなりですが、以下のふたつのコードを比べてみてください。 use strict; use warnings; my @shugo_charas = qw/ran miki suu dia/; my @shugo_charas_uc; foreach my $shugo_chara (@shugo_charas) { push @shugo_charas_uc, uc $shugo_chara; } use strict; use warnings; my @shugo_charas = qw/ran miki suu dia/; my @shugo_charas_

    配列操作をカジュアルに - Articles Advent Calendar 2011 Casual
    michael-unltd
    michael-unltd 2016/04/10
    map, reduce snippets
  • #11 inflate / deflate - Articles Advent Calendar 2011 Teng

    deflateを辞書で引くと http://ejje.weblio.jp/content/deflate とあるように、ふくらんだものをすぼませるといった意味があります。 これも経済でいうデフレでインフレとは逆の意味でつかわれますね。 なのでdeflateはオブジェクトという構造体を単純な文字列のようなものに変換することを言います。 Tengでのinflate / deflate Tengではinflate / deflateの定義をschemaに書きます。 今回のinflate / deflateの例を持ち出すのにいまのschemaではものたりないのでuserテーブルにcreated_atとupdated_atというカラムを追加したいと思います。 追加した後のtable定義、schema定義はまずこうなります。 package Proj::DB::Schema; use strict;

    michael-unltd
    michael-unltd 2016/04/10
    “データを プログラム層 <-> RDBMS の間で良い感じにデータ変換してくれるのがinflate / deflate”
  • perl でテストを始めよう!! - Articles Advent Calendar 2011 Test

    はじめに こんにちはこんにちは!最近会社のモニターが二枚になって持て余している xaicron です。 さて、Test Track と称して始まったトラック。全部よめばあなたもテストを書かずには生きていけない、そんな身体に大変身していること間違いなしです。 とりあえず今日は初日なので、perl でテストを書くときに必ずと言っていいほど利用する Test::More を使ったテストの書き方を書こうと思ます。 また、「テスト」とざっくりといってもいろいろなものがありますが、その辺の細かい話はきっと ikasam_a さんが書いてくれるのでスルーします。 Test::More チートシート まず、More というだけあって、結構機能がいっぱいあるので、チートシートを先にあげておきます。perldoc Test::More のほぼコピペですが、きっと皆さんは perldoc Test::More

    perl でテストを始めよう!! - Articles Advent Calendar 2011 Test
  • バイナリファイルを解析する

    Perlといえばテキスト処理や正規表現が得意で、バイナリを扱うような話についてはあまり聞かない印象があります。Perlが持つ関数pack/unpack等でもバイナリ処理は可能ですが、今回はData::ParseBinaryを使ってバイナリファイルを気軽に解析してみましょう。 基 ファイルからストリームを作る 解析したいファイルをData::ParseBinaryで扱えるストリームに変換します。 use Data::ParseBinary; my $stream = CreateStreamReader(File => $file_handle); 解析したい構造を定義する Struct関数で解析したい構造を定義します。Struct以下には基データ型やコンテナ型、ビット/バイトパディング型、制御構文型等を使用できます。各型に指定したラベルが解析結果として得られるハッシュのキーとなります。

    michael-unltd
    michael-unltd 2008/12/27
    解析例ソースあり
  • Config::PitとWeb::ScraperとPlaggerで24時間365日のゲーム監視体制

    序文 趣味のネットウォッチのために仕方が無く超便利なPerlを覚えようという感じの otsune です。そんなわけでコーディングの深い話はよくわからんので、今回はPerlとCPANを使ってネットウォッチを支援する手法について書きます。 ウォッチしたいWebページを機械的に監視できれば、あとはPlaggerなどの便利ツールを使って「メールを出す」「im.kayac.comでメッセンジャーにアラートを出す」「ピザを注文する」など好きな処理をすることが出来ます。 RSSフィードやAPIなどがあるWebサイトであれば特に苦労はしないのですが、今回取り上げるOgame.jpはウェブブラウザーゲームなので、フィードなど便利な機能はまったく存在しません。 そこでウォッチしたいWebページに対してWeb::Scraperを使ってYAMLを出力する短いスクリプトを書いてしまいます。 メールを出すなどのこまご

    michael-unltd
    michael-unltd 2008/12/21
    監視スクリプト
  • モダンなPerl入門 - モダンなPerl入門

    目次 Perlの概要 なにか なにか バージョン ラクダ画像とPerl 環境別インストール 基礎的なperldocコマンド 変数 スカラー(文字列・数値) 配列 ハッシュ リファレンス 条件分岐 if / elsif / else ループ foreach while デバッグ手法 print warn Data::Dumper YAML XXX ファイル操作 open() IO::File Path::Class stat() / -f / -d / -e / -x サブルーチン プロトタイプ 正規表現 メタキャラクター キャラクターセット データ tie Storable Encode 入出力の考え方 ワンライナー データベース DBI mysql PostgreSQL SQLite オブジェクト bless モジュール CPAN 各OSでのCPANのつかいかた WindowsでCPAN

  • Perl-users.jp - 日本のPerlユーザのためのハブサイト

    Perl Mongers Perl Mongers とは、日各地に存在する、Perl ユーザーのコミュニティのことです。各種イベントが行われていますので、是非参加してみましょう。 Shibuya.pm Fukuoka.pm Kansai.pm (@kansaipm) Yokohama.pm (@yokohamapm) Hokkaido.pm (@hokkaidopm) Nagoya.pm (@nagoyapm) Kushiro.pm (@kushiropm) Kyoto.pm (@kyotopm) Kamakura.pm Niigata.pm (@niigatapm) Sendai.pm (@sendaipm) Tokyo.pm Hachioji.pm (@hachiojipm) Chiba.pm (@chibapm) Yomitan.pm (@yomitanpm) Machida.pm

  • 1