Perl
ただの日記です。いままでスクリプト言語はPerlがメインでしたが、これからはPythonがメインになるかも知れない、というお話です。ことさらPythonを持ち上げる(いわゆるマンセー)とか、Perlを貶める(いわゆるdis)という意図は全くありません。
フロントのWebサーバはPerl,PHP,Rubyくらいしか使えない環境で、アプリ本体はそれ以外で実装したい。 プロキシサーバも使えないので、どうしたものかと思っていたら、Webサービス方式にすれば良かったことに気づいたので、ちょっと試してみました。 データ形…
昨日のエントリとちょっと関連してます。 直接デーモンプロセスを生成しない起動コマンドを持つアプリケーションをlaunchdで制御しようとした場合、デーモンの身代わりになってくれるdaemondoというユーティリティを使ったりします。 daemondoはMacPortsに付…
今日は久々にPerlが大活躍したので何か書きます。 やっぱりあらゆるUnix-like環境でデフォなのは強い。 そういえば、Perlには組み込みのuniqって関数は無いんですね。今までやったことが無くて気づかなかった。もちろんモジュールを使えば簡単にできますが、…
Perlの場合は、 my $s = "1"; # シングルクォーテーションの代替 q('abc$s'); # => 'abc$s' q!'abc$s'!; # => 'abc$s' # ダブルクォーテーションの代替 qq("abc$s"); # => "abc1" qq!"abc$s"!; # => "abc1"
見出しがちょっと分かりづらいかも知れませんね。 例えば、ディレクトリAとBの下に同じファイル名だけどタイムスタンプの異なる一連のファイルがあって、AとBのファイルのタイムスタンプを同じにしたりする方法です。複数ファイルの改行コードをCRLF→LF変換 …
操作を誤ると危険なコマンドです。自己責任でお願いします。今更ながら、ファイル一括変換の方法を。 次のコマンドは、カレントディレクトリ以下のhtmlファイルの改行コードを一括でCRLF→LFに変換します。 $ find . -name "*.html" | xargs perl -i.bak -pe …
ある要素が配列に含まれているかを調べる一般的な方法は? - argius noteの解決案。一般的かどうかはちょっと分かりません。 use strict; use warnings; my @a = ("APPLE", "BEER", "CANDY"); my $include = sub { (grep { $_ eq $_[0] } @a) > 0 }; my $fin…
overload - Perl の演算子のオーバーロードを行うパッケージ(perldoc.jp)こんなのがあったんですね。perldoc一覧のインデックスで見たことはあったのかも知れません。必要なかったので、スルーしてました。今回、なんとなく遊んでみたのでここに置いておきま…
可逆圧縮アルゴリズムのシャノン符号とハフマン符号関連で、平均情報量(エントロピー)を求めるスクリプトを書いてみました。Perlである必要性は全くありませんが、最近はJavaとPerl以外はご無沙汰でして、手っ取り早いPerlで書きました。 Algorithms with P…
訳あって、Perlで限定版ll(ls -l)を実装。パラメータは無し。アクセス権はrwxだけ、タイムスタンプは一律"yyyy/mm/dd hh:mi:ss"。 use strict; use warnings; sub to_type_s { $_ = shift or return; return "d" if -d; return "b" if -b; return "c" if -c;…
my $count = () = "bbbababbbaaaa" =~ /(ab)/g; # => 2 少し悩んで、こんな風に書いてみたら上手くいったので載せておきます。空の括弧のお陰で一時変数を使わないで済むのがポイント。 これって良く使われる方法でしょうか。もっと上手い方法がありましたら…
なんとなく思いついたので、やってみました。入力に使ったページはhttp://en.wikipedia.org/wiki/Multiprocessing,http://en.wikipedia.org/wiki/Blogです。マルチバイト文字には対応してません。 shコマンドだけでやってみる 出現回数が多い順に、上位10件…
CVSのコメントからChangeLogを自動的に生成してくれる。単純な(伝統的な?)テキスト形式のを作るなら、 $ cvs checkout TheModule $ cd TheModule $ cvs2cl.plとするだけ。
http://perldoc.jp/docs/modules/File-Slurp-9999.01/extras/slurp_article.pod Perlがメインだった頃の私は今以上に何も知らなかったので、こういう資料が今でもためになります。今からみっちり復習するのはちょっとつらいので、ちょっとずつ、何か発見があ…
いくつかの候補を順位付けしたいんだけど、普通にやると上手くいかない。そこで、「AとBならどっち?」と言う風に聞かれたら答えやすいかな、と考え付いたのがこれ。 正確には比較を手動で行うので「手動比較ソート」となるのでしょうか。 PerlとRubyとJav…
Javaなら Collection.contains(Object) 、Rubyなら ary.include?(val) を使うと思いますが、Perlの場合はどうやるのが一般的なのでしたっけ?スクリプトを書いていて、そういう関数があるのかどうか思い出せず、時間がないので defined関数 を使ってやってし…
Perlを始めるきっかけになったのは、CGIプログラム。今で言ったら、PHPのような感覚で使っていたわけです。当時はCGI対応Webサーバが無いと実行できないと思っていて、スクリプト言語という言葉を知ったのはずっと後のことになります。 DOSプロンプトで実行…
久しぶりにやったら混乱したのでメモ。 文字コード関連のライブラリを使わないで、マルチバイト文字を操作する場合の注意。例えば、SJISで書かれた以下のファイルがあるとき、 1と2と3 と4と5と「と」を全て削除する場合、 while (<>) { s/と//g; print; } $…
こんなのがあるんですね→どう書く?org。 もっとも手っ取り早い方法だとこう? print join ", ", ("A".."CV");でも、これだと1から100というのが見えない。 これなら、数値の範囲が分かり易いかな。 print join ", ", map { $a = "A"; for (2..$_) { $a++ } …
2年前まではまだ、習得率(?)がJavaと変わらない程度だったんですが、最近は圧倒的にJavaが多くなったのと、shellスクリプトを使うことが増えたため、使う機会が減っていました。 で、先日久しぶりにPerlで使い捨てスクリプトを書こうとしたら、「あれ、代入…
一般的なGUIテキストエディタには、GREP検索機能が付いていて、検索結果から対象ファイルにジャンプすることができる(タグジャンプ)。しかし、このGREP機能で指定できる検索条件では、指定できる条件に不満がある。 そこで、findまたはfind+grepなどで検索…
ローカルファイルシステムに散らばったアーカイブファイル内のファイルから、指定した拡張子のファイルを探したい。アーカイブの種類は拡張子で特定できる前提として、"lzh""zip""tar""tar.gz""tar.bz2"を対象とする。 まず、次のようなPerlスクリプトを用意…
一応、理屈は分かってると思うけど、説得力ないので書いてみるです。 まず、サーバ側。PerlのCGIで、単語リストの中からランダムで一語取り出して返す。 #!/xxx/perl use strict; my @list = qw( Water Milk Cider Coffee Wine Tea Vodka Beer ); my $x = in…
Parrotは将来的にはPerlに限らないようですが、Perlのカテゴリとして書いてみます。 Parrot 入門 - The Parrot Primer ぐぐるのラッキーさん*1で開きますが、いまやRubyでもYARVの開発をされていることで有名なささださんによるページ*2です。勝手な解釈かも…
Rubyリファレンスによると、Enumerableは「繰り返しを行なうクラスのための Mix-in。」とある。Arrayクラスなんかが代表的だが、Enumerableのメソッドはたくさんあって覚えるのがたいへんそう。実際、まだいくつか良く分からないものがある。 よく使うのは、…
テキストデータを1行ずつ処理する場合。 # Perl while (<>) { print if /end/i; } これを使うとき、こうやって実行していた。 $ cat file.txt | perl grep.pl しかし、これで動くことを今日知った。 $ perl grep.pl file.txt それと言うのも、Rubyでは # rub…
sardineさんの日記(id:sardine:20060331)で、「パスのリスト」が含まれる任意の環境変数の値をチェックするツールをD言語で書いてらっしゃいます。 私はこれをPerlとRubyで書いてみました。ちょうどRubyのファイル関連を調べていたので、良いお題かと思い…
20060401-Legwork - Perlish Magazine(ドメイン名に注目) (経路:) どっちなんだw。
Perl6について調べてみたら、今のところこの2つがホットトピックぽい。 Pugsは、Perl6の実装がいつまでも提供されないことに業を煮やした誰かが作った、HaskellによるPerl6処理系。Haskellの処理系Hugsに由来しているのかどうかは不明。 Parrotは、Perlの処…