→言語・開発環境

→正規表現

#contents

*一般 [#ebbeadda]
-[[Perl vs PHP>http://yusukebe.com/archives/10/03/07/103912.html]] 2010.3.8
-[[Moose - Perl5のためのまったく現代的なオブジェクトシステム>http://okilab.jp/project/document/japanate/perldoc/html/Moose-0.12/Moose.htm]]
--[[Mooseに入門してみたよ>http://perl-mongers.org/2008/05/moose.html]]
--[[初めてのMoose - Mooseのすすめ>http://d.hatena.ne.jp/hide-K/20080527/1211880701]]

-[[最新PerlフレームワークArk徹底解剖>http://gihyo.jp/dev/feature/01/perl_ark/0001]]
-[[Perlがダメな理由>http://d.hatena.ne.jp/ahmok/20090411/p1]] 2009.4.11
--とりあえず動くものを作りたいならPHPの方が生産性が高い。英語やコードは読めないけど、日本語なら読める人向けの文章ならいっぱい出てくる。
--Perlは口先だけでは叩かれる文化らしいので、自分の体験を書いておく:XMPPを使って何らかの文字列を送信しようとPerlとPHPで試みた。Perlでは4時間くらい費やしたができなかった。一方、PHPでは1時間もかからずに、送信できた。アホな俺にはどちらが相応しい言語なのかよく分かる。

-[[今日のCPANモジュール>http://e8y.net/mag/]]
-http://search.cpan.org/

-Active Perl download page
--http://downloads.activestate.com/ActivePerl/Windows/5.8/

-http://perl-users.jp/

-[[Higher-Order Perl(pdf)>http://hop.perl.plover.com/book/]]



*入門記事 [#o3712762]
-[[Perl を学ぶとき、真っ先に覚えたいモジュール>http://bayashi.net/diary/2013/0415]] 2013.4.15

-[[Beginning Perl (Wrox)>http://ofps.oreilly.com/titles/9781118013847/whatapostrophes_perlquestion_mark.html]] 
-[[Perl基礎文法最速マスター>http://d.hatena.ne.jp/perlcodesample/20091226/1264257759]]
-[[サンプルコードによるPerl入門>http://d.hatena.ne.jp/perlcodesample/20080229/1204271923]]
--[[詳細目次>http://d.hatena.ne.jp/perlcodesample/20080229/1204271923]]

-[[Perl基礎入門>http://www.kent-web.com/perl/index.html]]
-[[とほほのPerl入門>http://www.tohoho-web.com/wwwperl.htm]]
-[[Perl講座[Smart]>http://www.rfs.jp/sb/perl/]]

-[[Essential Perl>http://www.scribd.com/doc/6792/Essential-Perl]]


*Tips [#mae1d881]
-[[Perlの食えない事情 - 演算子編>http://akiym.hateblo.jp/entry/2013/02/03/031420]] 2013.2.3

-[[簡単!たった13行のコードで HTML取得&解析をするPerlスクリプト>http://dqn.sakusakutto.jp/2010/06/perlhtml.html]] 2010.6.7

-[[Perl裏技集>http://www2u.biglobe.ne.jp/~MAS/perl/waza/]]

-$@ 例外を判定するときのlocal指定

-[[現代的なPerlの記述方法一覧>http://d.hatena.ne.jp/perlcodesample/20091120/1246679588]] 2009.11.2

-[[$_ とスコープ>http://blog.livedoor.jp/dankogai/archives/51315606.html]] 2009.11.1

-[[http://blog.livedoor.jp/dankogai/archives/51307692.html]] 2009.10.16
--メモリを返すかどうかの振る舞いを決めているのが、 perl を build する時に指定する、usemymallocオプション

-[[perl - use CGI; use Encode; # 非英語Webプログラミング3原則>http://blog.livedoor.jp/dankogai/archives/51227060.html]] 2009.6.23
--PerlでWebプログラミングする場合の三原則
   1. QueryはCGIモジュールで処理する
   2. 文字コードはEncodeモジュールで処理する
   3. 文字コードを固定できない場合は、QueryまたはPATH-INFOに文字コード情報を含める
         1. 決め打ちできる場合は、UTF-8にしておく

-[[perl - で全角半角変換をモダンに行う>http://blog.livedoor.jp/dankogai/archives/51220946.html]] 2009.6.6
-[[もうやらなくていい昔のコーディングテクニック>http://blog.livedoor.jp/dankogai/archives/51208939.html]]
-[[for(;;)よりforeach()>http://blog.livedoor.jp/dankogai/archives/51193858.html]] 2009.3.30
--"Perl Best Practices"でも、読みやすさの観点からCスタイルのforは避けよ(pp. 100-101)と言っているが、もう一つ損なわれるものがある。速度である。

-[[「モダンPerl入門」感想>http://d.hatena.ne.jp/antipop/20090209/1234176357]] 2009.2.11
--本書は、まず7ページ目からいきなり、Perl5のオブジェクトシステムを刷新して昨年話題になったMooseを紹介し、それを用いて説明を行うことで、Perlにおけるよいスタイル、イディオム、デザインパタンまで一挙に説明してしまいます。特に、デザインパタンについては、オブジェクトが複雑にやり取りを行う現実のシステムを、どう交通整理すれば開発効率、保守性を高められるかという問題ですので、Mooseを用いることにより、ややもすると非本質的になってしまう言語仕様のいき届かなさのフォローを排して説明することに成功しています。

-[[クロージャの概念をクラスとの対比でわかりやすく説明する>http://d.hatena.ne.jp/perlcodesample/20080710/1215705441]]
--[[perl - Class vs. Closure>http://blog.livedoor.jp/dankogai/archives/51079991.html]]

-[[Perl「言語」初心者がモダンなPerlを高速に学ぶ方法>http://dann.g.hatena.ne.jp/dann/20080703/p2]] 2008.7.4
--Plaggerのソースを読む
--モダンなPerlコードで書かれた本は殆どない
-[[Perlのリスト操作をRuby風に>http://d.hatena.ne.jp/naoya/20080419/1208579525]]
-[[Perlでutf8化けしたときにどうしたらいいか>http://d.hatena.ne.jp/tokuhirom/20080408/1207619640]]
-[[正規表現よりeq||eqのが速い>http://blog.livedoor.jp/dankogai/archives/51017983.html]] 2008.3.14
-[[OLEによるWork, iTunesなどの操作サンプル>http://codezine.jp/a/article/aid/1567.aspx]]
-[[use Imager;>http://blog.mag2.com/m/log/0000222814/108581409.html]]
--Imagerモジュールによるサムネイル画像の作り方など
-[[万能なnewの書き方>http://blog.livedoor.jp/dankogai/archives/50816007.html]]
-[[Regexp::Assembleのススメ>http://blog.livedoor.jp/dankogai/archives/50812865.html]]

-Perl6 は Parrot という環境で実行される。Parrot は Java や .NET の VMのようなもの

-[[PerlのAUTOLOAD:http://blog.livedoor.jp/dankogai/archives/50491359.html]]
-[[PugsでPerl6を体験する:http://www9.ocn.ne.jp/~ymt/perl6/pugs.html]]
--[[Pugs:http://search.cpan.org/~autrijus/Perl6-Pugs-6.0.12/]]
-[[Perl6 Rules(新たな正規表現):http://www9.ocn.ne.jp/~ymt/perl6/rules.html]]


*基本的な文法、関数など [#q2747dea]
-[[Perlのリテラル:http://www.rfs.jp/sb/perl/02/02.html]]

-数値計算を整数でやりたいときは use integer;

-user varsとは
--http://www.mnet.ne.jp/~tnomura/vars.html
--use vars は組み込み関数ではなく、use で vars.pm モジュールを読み込んでいるだけなのです。

-package:=名前空間 を指定しない場合mainパッケージとみなす

-local修飾子はグローバル変数もしくは複合型(配列やハッシュ)にしかつけられない。

-レキシカル変数
--myキーワードで修飾する。
--local修飾子はつけられない

-グローバル変数
--必ずパッケージ(=名前空間)にヒモづける。
--ourキーワードで修飾する。
--定義側
 package MyApp;
 use strict;
 our $VARIABLE=1;
--参照側
 package main;
 $MyApp::VARIABLE;

-Module::installのrequires()
 requires('Hoge'); Hogeというモジュールが必要。第二引数でヴァージョンを指定する

-[[perl 変数展開 qq qw>http://pub.ne.jp/wakapon/?entry_id=440238]]
--qw()は文字列のスペースによるsplit
--qq()は変数をダブルクオートによって囲むのと同じ

-sprintf
  my $w =sprintf( '%02d', $i );

-match/replace関数のオプション
 i -> case insensitive 大文字小文字を無視する
 g -> 毎回評価する
 なぜかよく忘れるので…


*PerlでAssertを使うには [#q83b0eef]
-標準機能でやりたい場合
 use Test::Harness::Assert;
 assert( 条件 )

-参考:http://harapeko.asablo.jp/blog/2006/10/03/546835

*ファイルのオープン/クローズ [#df054c92]
 open(IN, $filename );
 while (<IN>) {
   print $_ ;
 }
 close(IN);

*ディレクトリから列挙 [#da07d00a]
-普通にやる
 opendir(DIR, ".");
 while ($file = readdir(DIR)) { 
  if ($file =~ /<適当なパターン>/ ) {
     #適当な作業
  }
 }
 closedir(DIR);
-再帰的にたどる場合
 sub prc_all_dir {
     my $dir = shift;
     #print 'open' . '['. $dir ."]\n";
     opendir(DIR, $dir ) or die "can't open directory [$dir] error\n" ;
 
     my @entries = readdir( DIR ); 
     closedir(DIR);
 
     for ( @entries ) {
         # '.' と '..' はパス
         next if $_ eq '.';
         next if $_ eq '..';
 
         my $entry = $dir . '/' .$_;
 
         #ディレクトリだったら再帰する
         if ( -d $entry ) {
             #printf "Dir = %s\n", $entry;
             #各ディレクトリ内の処理
             prc_all_dir( $entry ); #再帰
         } 
         #ファイルのとき
         else {
         
         }
         
     }
 }



トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS