Perl入学式 全6回のPerl入門講座。東京、大阪、沖縄、札幌で開催。(東京は4月と10月スタート、それ以外は5月スタート) YAPC::Japan Perlを軸としたITに関わる全ての人のためのカンファレンス。 東京 吉祥寺.pm 五反田.pm 大阪 なにわPerl 沖縄 沖縄.pm
RaycastにはScript Commandsという機能があり、ずっとずっと気になっていたのでGW中に重い腰を上げて試してみた。最近会社の人にRaycastをオススメすることが多くなってきたのだけれども、「Raycast歴1年以上経つのにScript Commandsも使ったことないの?」みたいに後ろ指差されないようにするためにも... Script Commandsとは? 簡単にいうとCUIのコマンドをRaycastから呼び出せるというただそれだけのものっぽい。「っぽい」というのは単純に自分がちゃんと調べてないだけです。はいテキトーですいません。 なにを作るか? Hello Worldを出力するだけのScript Commandsを作っても仕方がないので、よく自分でやっている単純作業を自動化するスクリプトを考えてみた。結果として生まれたのは、以下のような beforeの文字列をafte
B::DeparseはPerl5の構文木からPerl5コードを生成するトランスレータであると言える。この場合は生成するコードはPerl5なので「トランスレータ」にはあまり見えないが、変換先は別の言語であってもいい。というよりは、もともとはPerl5の構文木からCのコードを生成するのが主要な目的の一つだったはずである。 つまり、Perl5 on Parrotの実装として、Perl5のBモジュールのコンパイラバックエンドの一つとしてParrotコード生成器を作るということも可能ではないかと思われる。「perlバイナリだけがPerl言語を構文解析できる」といわれるように、Perlの構文解析はとても難しいのだが、perlバイナリを使えばそれができる。 まだ思いついただけのアイデア段階だが、これは面白そうだ。
Perlのドキュメントはわざわざサーバにアクセスして読むものではなく、インストールして読むものですよね?――というわけで、日本人向けに特化したperldocをつくってみました。Pod::PerldocJpをインストールすると、perldocjpというコマンドが利用できるようになります。これを使うと、 =encodingが指定されている(たいていは日本語の)PODも(端末の文字コードによらず)正しく表示できるようになります。 perlコアに付属している一部のドキュメントについてはperldoc.jpで公開されている日本語のPODをダウンロードしてきてローカルで読めるようになります。 fによるコマンド検索などにも対応していますので、コマンドラインから $ perldocjp -Jf printとタイプすれば、日本語でprintコマンドの説明が読めるようになります(perlfuncを訳してくださ
use Time::Piece; my $time = localtime; print $time->date . " " . $time->time . "\n"; $time += 3600; # 1時間後 print $time->date . " " . $time->time . "\n"; Time::Pieceは、localtime関数とgmtime関数を、それぞれスカラコンテキストではTime::Pieceオブジェクトを返すものに変更(overload)します。ただし、リストコンテキストではTime::Pieceモジュール読込後も、通常通り秒、分、時、日、月、...の配列を返します。 通常(Time::Pieceモジュールを読み込んでいない時)は、次のようにlocaltime関数を呼ぶと $_には"Thu Nov 1 01:46:31 2007"のような文字列が入ります。
Perl › データベース › here Perlを使ってデータベースは初級者が学ぶには今までは少し敷居の高いものでした。まずSQLの実行環境を構築する必要がありすぐに勉強したいという需要を満たすことはできていませんでした。 ですが現在はこの状況は変わりました。現在ではActivePerlをダウンロードするとDBD::SQLiteと呼ばれるSQLiteを利用するためのモジュールがパッケージングされています。 またデータベースに接続するためのユーザから見たインターフェイス部分にあたるDBIというモジュールもパッケージングされています。 ですのでActivePerlの最新版をダウンロードするだけで何の環境構築も行わないでデータベースを学習し始めることができます。 DBD::SQLiteとDBIがインストールされていることを確認する まずDBD::SQLiteとDBIがインストールされているかど
Perl › here Perl5.8以降における標準的なPerlの書き方を解説します。 インターネットで検索するとPerl4のころの古い記述がたくさんあります。また書籍などの多くもPerl4の記法で書かれています。Perl4の記法は複雑になりやすく間違いを生みやすいのでこれからPerlを書く人はPerl5の現代的な記法で記述することを強くお勧めします。 strictプラグマとwarningsプラグマ (必須) strictプラグマとwarningsプラグマを有効にします。 use strict; use warnings; use strict;とuse warnings;の2行はスクリプトの最初に必ず記述してください。これらはPerlの文法チェックを厳しくするためのものです。面倒だという軽い気持ちでこれを記述しないと後々本当に面倒なことになります。 use strict;とuse wa
前回 Moose を使って作ってみた演奏させてみたプログラムですが、なんも考えずにとりあえず書いたものなのでもうちょっと奇麗にしてみようと思います。 http://d.hatena.ne.jp/clmind/20090322/1237734727 んで、書いてる途中に気になった点を少しずつ調べながら書き直してみているんですが今回は一つわかった事を書いてみます。 前回のエントリを見てもらうとわかるかと思いますが。Musicianクラスを継承してVocal, Guitarlist, Bassist, Drummerというクラスを定義しています。この4クラスはSongクラスで利用しているrole(自分がバンド内で何を担当しているか)というメンバ変数を持っているんですが、これを初期化するのに『__PACKAGE__』を使っています。 この__Package__はクラス名を保持している変数で rol
プログラミング言語「Perl」の開発者は10月2日、最新版「Perl 5.11.0」を公開した。5.11は、「Perl 5.12」で盛り込む機能強化をテストするためのDevelopment Releaseとなる。CPANサイトよりダウンロードできる。 Perl 5.11.0は、現在開発が進んでいるPerl 5.x系の次期安定版「Perl 5.12」に向けた動作確認を目的としたもので、開発者向けリリースという位置付けとなる。 Perl 5.11.0の主要な変更点は次のとおり。 エスケープシーケンス「\w」、「\d」、「\s」、およびPOSIX文字クラスの定義がUnicodeに対応したものに変更された 「@INC」変数で指定されているモジュールパスの検索順が変更された given~whenステートメントの強化 スマートマッチ演算子の仕様変更 「goto」、「last」、「next」、「redo
諸事情により、AnyEvent::TwitterのWassrバージョンが欲しかったので、作ってみた。 AnyEvent::Twitter - search.cpan.org 基本的にはこのAnyEvent::Twitterのパクリ。じゃっかんインターフェースを自分好みに変更してたりもするけれど。 ドキュメントは無いですゴメンナサイ!! いちおう特徴 認証はBASIC認証一択 friends_timelineとrepliesを取得可能 内部でAnyEvent::HTTPを使ってAPIアクセス、AnyEventのtimerを使って自動繰り返し weightによる取得頻度の調整はAnyEvent::Twitterと同様 APIの使用回数制限は無いので、intervalで指定した秒数毎に取得(デフォルトは60秒とした) Twitter APIでは指定idより新しいもの、という指定が出来たけどWas
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
http://perl-casual.org/ 始動おめでとうございます。賛同した一人として、自分も積極的に関わっていきたいと思います。なので、すでに枠は埋まってしまっていますが、 Perl Casual Talks#1 のスピーカー枠にも応募してみました(ただし補欠)。 いままでカンファレンスや勉強会に参加したことは何度もあるけれど、実は一度も喋ったことがありません(ライトニングトークですら)。今後は聞くだけではなく喋ることにもチャレンジしていきたいと思っているので、意思表明というか自分へハッパをかけるつもりで、初めてスピーカー枠に応募しました。 ただ、「聞くだけじゃダメだよ、喋るがわにまわらないとダメだよ」とまでは思わないので、自分に合ったやり方で Perl コミュニティに関わっていきたいと思います。ブログ読んでるだけでも、自分が「ブログを通じて参加してる」と思えれば、もうコミュニティ
2009年10月19日22:50 Perl Ruby memcachedを介して、PerlとRubyでデータをほげほげしてみる ふと思って、Ruby でデータを memcached に入れて、それを Perl から取り出せるのかな〜というのが気になったので試してみました。データの形式として、文字列、ActiveRecord、ハッシュをそれぞれ試してみます。予想では、ActiveRecord のデータはさすがに Perl では読み込めないだろうけど、それ以外は読み込めるんじゃないかなぁと。 まずは Ruby を使って memcached にデータを set します。 #!/usr/bin/ruby require 'rubygems' require 'activerecord' require 'memcache' class Hoge < ActiveRecord::Base estab
Perl で変数が数値かどうかを判定する場合、 CPAM モジュールの Scalar::Util::Numeric が便利なので、使い方をメモメモです。 #!/usr/bin/perl use strict; use warnings; use Scalar::Util::Numeric qw(isnum isint isfloat); my $sample = "-1.1"; if(isnum $sample){ print "$sample isnum\n"; } if(isint $sample){ print "$sample isint\n"; } if(isfloat $sample){ print "$sample isfloat\n"; } isnum 関数は引数が数値として有効かどうかを判定してくれます。例えば '1.1' は数値だけど、'1.1a' は数値じゃないとかね
http://www.websequencediagrams.com というサイトを知ってますか?ZIGOROuさんがブログで使っていたので知ったんですが、実に便利っぽいです。専用のダイアグラム構文を書いてサイトにHTTP POSTするとPNGやPDFでシーケンス図を生成して返してくれる代物です。 構文自体とてもシンプルです。 Alice->Bob: Authentication Request Bob->Alice: Authentication Response こんな感じでとても簡単&スマートなものなんですが、さらにこいつをプログラマブルに書けたら便利かなー、なんて思ってしまい、Perlでモジュール化してみました。 WebService::WebSequenceDiagrams github: http://github.com/miki/WebService-WebSequence
Web等のマルチユーザ環境では、複数のユーザが同時に処理要求した場合、シーケンシャル番号の採番などで排他制御が必要になります。 元々マルチユーザ環境のLinux系では、色々とサポートされていますが、元々シングルユーザ環境のWindows系では、あまりサポートされていません。 以下にLinux系とWindows系の両方で動作するプロセス排他のサンプルを組んでみました。 何かの参考になれば幸いです。 use strict; use warnings; Lock_Process(); print "AAAAAAAAAAA\n"; sleep(10); print "BBBBBBBBBBB\n"; Unlock_Process(); sub Lock_Process { my $lock_flg; while (1) { $lock_flg = mkdir('lockdir', 0777); if
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く