PerlのWeb Application Frameworkである Mojolicious でアプリをつくる場合に必要な基礎的な使用法を紹介します。1枚スクリプトから書けるMojolicious::Liteを前提としていますが大きなモノにも対応出来ます。 イントロ インストールする cpanm コマンドでコアモジュール以外の依存関係無しで一発。
前置き こんにちは、aloelightと申します。みなさん、意識は高まっていますか? 私は上々です。 今日は、拙作のpfswatchを紹介します。 ファイルが変更されたら特定のコマンドを叩きたいなーと思ったことはありませんか?pfswatchを使うと簡単に実現できます。 使い方 インストール方法は cpanm App::pfswatch を叩くだけです。適当なbin/に pfswatchコマンド がインストールされます。インストール後は、pfswatchコマンドに監視したいディレクトリやファイルと実行したいコマンドを-eオプションのに続けて渡してあげます。 $ pfswatch /path/to/watch -e perl -E 'say "wassyoi"' 私は以下のようなコマンドで、モジュールを更新したらテストを自動で実行するために使っています。別窓で立ち上げておくと、横目で互換性が
YAPC::ASIA 2013 9/20 at 慶応大学 株式会社GaiaX Kazuhiro Homma (@kazuph) Whoami @kazuph / 本間 和弘(Kazuhiro Homma) Web&SmartPhone Engineer / 株式会社ガイアックス 社内でCPAN Authorになろうハッカソンを開催しました!! Vimのsnippetについてあまり知らなかったので設定してみたら便利過ぎてつらい Whoami 去年の素数戦争の企画・運用をやってました ガイアックス × CodeIQ Yapc::Asia2012::素数戦争(PrimeWars) 言語別開発環境 メモ(日本語) GVim Perl Vim iPhone / Objective-C XCode + XVim Android / JAVA Eclipse + Vimperator Chrome Vi
はい、というわけで自分のトークです: 昨年12月頃から関わってるlivedoorBlogのコードを触っていた時の憤りをスライドにぶつけてみました。 追記:スライドに「ログにマーカーをつける」というのは、(コード読んでないけど)多分こちらのエントリにあるLog::Minimal::Indentとだいたい同じ感じのヤツです ところでWeb上で見かける感想の中でこんなのがありました: 今年個人的に一番衝撃的だったのはやっぱ、livedoor blogのPlack化です。技術的な側面もさることながら、ああいう近視眼的には何のメリットもないし、逆にデメリットの方が大きそうな案件にリソースを割くジャッジができる会社としての姿勢が本当に凄いなと。 実はビジネス的にも意味はあるんだなー。 なかなか書くことができなかったんだけど、その内容というのがこちらと→ ブログのお引っ越し機能を大幅に強化しました! (
Perlの食えない事情 より おっと、そうです、Perlには演算子が多すぎるのでした。せっかくの機会なので、Perlの演算子を紹介します。 ビーナス演算子: 0+, +0 数値として評価してくれます。意外とよく見かけますね。 なぜこの演算子を使う必要があるのかというと、Perlは文字列と数値を明確に区別できないからです。scalarを文字列として解釈するならば文字列として、 print 0+ '10'; #=> 10 print 0+ '123b'; #=> 123 print '1.2e3' +0; #=> 1200 print [] +0; #=> 4303367864 ちなみに、文字列として評価するときにはこのようにするとかっこいいと言われています。 $obj.q(); 一見メソッド呼び出しのように見えますが $obj . ''; と等価です。 ベビーカー演算子: @{[ ]} 文字
恥ずかしながら今日まで知らなかったんすっかり失念してたですが、要はラクダ本第3版の6.4.1 定数関数のインライン化の内容です。 過ちを犯した use constant は関数と等価であることは有名です。それを利用して、定義した内容を実行時に別の値にしたくて以下のコードを書いたんですが、駄目でした。 use strict; use constant HOGE => 'A'; no warnings 'redefine'; *HOGE = sub () {'B'}; print HOGE, "\n"; これは A と出力されます。 理由 Deparseするとわかります。 % perl -MO=Deparse test.pl use constant ('HOGE', 'A'); no warnings; use strict 'refs'; *HOGE = sub () { 'B' } ;
普通のサブルーチンの再定義は "no warnings 'redefined'" "no warnings 'redefine'" で警告を抑制できるわけですが、定数サブルーチンは警告のでる条件がちょっと違います。具体的には、再定義警告は以下のいずれかの条件を満たすときです*1。 use warnings 'redefine' (or -w switch) のもとである 対象が定数サブルーチンかつ再定義しようとしている値が異なる 例: #!perl -w use strict; use constant FOO => 10; # first definition use constant FOO => 10; # redefine without warnings use constant FOO => 20; # redefine WITH warnings constant.pmを使っ
[Perl] CGI.pmのデフォルト文字コードはISO-8859-1。 そこでcharsetメソッドで文字コード指定するが charset('utf-8') は注意。 例1) #!/usr/bin/perl use strict; use warnings; use CGI qw(-nosticky); my $cgi = new CGI; $cgi->charset('utf-8'); my $str = $cgi->param('str') || ''; $str = $cgi->escapeHTML($str); print $cgi->header, $cgi->start_html(-title=>'test',-lang=>'ja-JP'), $cgi->h1($str), #[error] Wide characte
ダミアン先生によれば、 return undef じゃなくて return のみがベストプラクティスって話。例えば引数で受けた数が偶数どうかだけを判別するスクリプトがあったとします。 #!/usr/bin/perl use strict; sub is_even_number { my ($digit) = @_; if (($digit % 2) == 0) { return 1; } else { return undef; } } print is_even_number(shift) ? "yes?n" : "no?n"; is_even_number 関数は偶数なら1、それ意外ならundefを返します。これでほとんどの場合問題ないのですが、ふとした局面で配列で受けちゃったりするとやっかいな事になったりならなかったり。 my @test = is_even_number(3); i
弊社には、アンチ正規表現の人がいますが、私は熱烈な正規表現 Lover である。 大崎氏の「Perl 正規表現雑技」とかは、正規表現 Lover 垂涎のコンテンツとして、ブラウザのリンクバーに入れている程である (嘘)。 正規表現は覚えてモノにすれば、シアワセになれる素晴らしい仕組みなのです。 昨日、Shibuya.pm のテクニカルトークに行った際「はてなでは XML 系の CPAN モジュールはあまり使っておらず、XML の parse には殆んど正規表現を使用している」という話が出てきて、嬉しさのあまり身震いした。 parser を書くのが面倒臭くて「XML::Simple 最強」とかホザいた自分に対しての自戒と、弊社の Chief Regular Expressioner という肩書を持つ (自称) 立場の人間として、たまには、正規表現ゴリゴリなネタでも書いてみようかなと思いますた
えーっと、IDE使ってません。ごめんなさい。 PerlをIDEで書いてる人、どれくらいいるんだろう。何使ってるんだろ。 私はLinuxでもWindowsでもVimを使ってます。Perlってサーバで使われる事が多いし、サーバだとsshで入る事が多いだろうし、まぁXの転送やVNCやそれっぽいのでグラフィカルに操作しても良いけど、正直PerlのドキュメントもテキストベースだしPerlで入力補完出来るグラフィカルエディタもまず無いと思ってる。 で、私がVim上で使ってるPerlの開発を「200倍便利にするスクリプト」を紹介。 perldoc.vim perldocはPerlのオンラインマニュアルなんだけど、これを一々ターミナルに戻ったりして引いてると時間のロス。screenで分割して開いてもいいんだけどscreenの画面間移動よりもVim内でのウィンドウ間移動の方が操作感が統一出来てて良い。 そこ
404 Blog Not Found:perl - myとourとscopeと みんな難しく考えすぎです。 (例外については後で考えることにして)とりあえず以下の基本をおさえておけば混乱することはないと思います。 ■ our 宣言について our はグローバル変数をスマートに使用するための宣言です。our は use vars と等価と考えてください。 our $var; は use vars qw($var); と等価。 our $var = 1; は use vars qw($var); $var = 1; と同じ動きをするもの、と覚えておけばOKです。それ以上の違いは基本的にないと考えて構いません。 ひとつ実用上の違いがあるとすれば、our は Perl 5.6 以降の built-in なのに対して、use vars は vars.pm の Perlスクリプトで実装されています。し
2008年01月10日10:15 カテゴリLightweight Languages perl - myとourとscopeと うーん、微妙に違います。 local と my - IT戦記 our 名前をソース上のスコープに限定. local 値をスタック上のスコープに限定. my 名前と値の両方をソース上のスコープに限定 なら、理解しやすいと思います>< 以下のコードを見てみましょう。何と表示されるでしょうか。 { package Foo; our $bar = 'baz'; } our $bar = 'drink'; warn $bar; warn $Foo::bar; 「ソースに限定する」あるいは「ファイルに限定する」のだとしたら、この挙動はありえないはずです。 ここで、Perlのスコープに関するルールを覚えておきましょう。すっごく簡単です。 {}は、問答無用でスコープを作る = b
The mod_perl Developer's Cookbook By Geoffrey Young, Paul Lindner, Randy Kobes Part I: Apache2:: Core API Apache2::Access - A Perl API for Apache request object: Access, Authentication and Authorization. The API provided by this module deals with access, authentication and authorization phases. Apache2::CmdParms - Perl API for Apache command parameters object Apache2::CmdParms provides the Perl AP
2010年05月05日04:15 カテゴリLightweight Languages perl - にも集合オブジェクトと演算を 404 Blog Not Found:perl - 配列の∪と∩に想定内の返事が。 PERL HACKS(日本語版) [英語版] 2010-05-01 - methaneの日記一方、Pythonはsetの演算子を定義した。 もちろんPerlでも定義できます。 以下、実例。 #!/usr/bin/perl use strict; use warnings; package Set; sub main::set { __PACKAGE__->new(@_) } # exportの代わり use overload ( '@{}' => \&array_ref, '""' => \&string, '|' => \&union, '&' => \&intersectio
2009年06月06日01:15 カテゴリLightweight Languages perl - で全角半角変換をモダンに行う 今ならLingua::JA::Regular::Unicodeが第一選択肢ですが、こういう方法もあるということで。 Perl で半角カナと全角カナの変換をする : Serendip - Webデザイン・プログラミング Perl を使って半角カタカナと全角カタカナの変換をするスクリプトを、標準モジュールの Encode.pm と Unicode::Japanese と Lingua::JA::Regular::Unicode を使ってそれぞれ変換スクリプトを書いてみる。 CORE Moduleのみを使うという縛りをかけています。 #!/usr/bin/perl use 5.008001; use strict; use warnings; use utf8; us
XML::LibXML大好きな者が以下述べてみます。 しかし、XML::Liberalを除けば、XML::*なモジュールはX抜きのHTMLを食ってくれない.... と、404 Blog Not Found:perl - HTMLをXMLとして扱うで書かれていたのですが、XML::LibXML、というかその基となるCライブラリlibxml2はHTMLパーサも備えているので、直にHTMLを扱うこともできます。 ただ元がXMLパーサなだけに、少しでもHTML文書に壊れた部分があると解析エラーを起こして停止してしまいますが、幸いなことにそのエラーから回復するモードも備えています。以下サンプルを。 use strict; use warnings; use XML::LibXML; my $parser = XML::LibXML->new(); $parser->recover_silently(
README arrays array array_change_key_case array_combine array_count_values array_fill_keys array_flip array_map array_merge array_pop array_push array_rand array_reverse array_shift array_splice array_sum array_unshift array_walk count datetime localtime strftime time dir chdir chroot closedir getcwd opendir readdir rewinddir scandir filesystem basename chmod dirname is_dir is_executable is_file m
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く