Perl日記

日々の知ったことのメモなどです。Perlは最近やってないです。

Perl

さくらレンタルサーバPerl環境

また必要になった時のためにまとめておく。 0.binディレクトリ $ mkdir ~/bin 1.cpanminus 気になっていた cpanminus を初めて入れた。 $ cd ~/bin $ wget http://xrl.us/cpanm $ chmod +x cpanm 2.perlbrew さくらのデフォルトはPerl5.8.9と、ちょっ…

Webサービスマッシュアップ1

http://orhowilearnedtolovetheperl.com/ とりあえず、Twitter から"Perl"で検索した結果を出すようにしてみた。 初めは定期的にMySQLに保存しようと考えていたけれど、これって著作権的にどうなんだろ…と思って少し調べてみた。 Twitterまとめは著作権的に…

レンタルサーバ

をとりあえず借りた。 http://orhowilearnedtolovetheperl.com/ 週末からがんばる。

マッシュアップ

で、なにかそろそろつくろうと思う。 とりあえず自分用でもいいし、サイト構築の練習なんかも兼ねつつPerl関係の記事とか資料とかを公開されてるWeb APIなんかからとってくるようなのを作ってみよう。 適当にタイトルを考える。 Perl Momonger パールモモン…

感想

何故Perlなのか。 - Unknown::Programming 4年前のこちらの記事を見た。 僕とまったくもって似たような環境だったので、初めから終わりまで共感しっぱなしだった。 strict と warnings はほんと偉大だよ。 なんだちゃんと基礎を学べば簡単ではないか。 お願…

DBIのfinish()

入門Perl DBI作者: アリゲータデカルト,ティムバンス,Alligator Descartes,Tim Bunce,田中幸出版社/メーカー: オライリー・ジャパン発売日: 2001/08メディア: 単行本購入: 2人 クリック: 37回この商品を含むブログ (14件) を見る よりfinishメソッドについて…

PHPでList::MoreUtilsのやつ

何番煎じかわからないけど、 Perlのuniq()とmesh()をPHPで考えてみた。

機種依存文字の文字コード変換

Windowsのメモ帳で保存したテキストファイルの中に「①」があって、それをPerlで読み込んで以下のようにUTF-8に変換したら化けていた。 use Encode; open my $fh, '<', './memo.txt' or die; binmode $fh, q{:encoding(:sjis)}; print encode('utf8' => $_) f…

PerlerのためのPHP3

前までの2回でふと思ったこと。 sort()で破壊させないには a,b,c,d,ePHPのsort()はPerlと違ってソーティングされた配列が返ってこない。 直接直截。 注意: ソート関数は、すべて配列自身を直接変更します。 ソートした配列を新しく作って返すわけではありま…

PerlerのためのPHP2

続き。 初めてのPHP5作者: David Sklar,桑村潤,廣川類出版社/メーカー: オライリージャパン発売日: 2005/10/27メディア: 単行本購入: 6人 クリック: 54回この商品を含むブログ (41件) を見る そういえばtrueとfalseが抜けていた。 つーか「===」って何よ。 …

PerlerのためのPHP1

たぶんPHPを使わなければならないようになると思うので、今のうちから勉強。 ああCatalystでもっと遊びたい。 とりあえずこれを買った。 初めてのPHP5作者: David Sklar,桑村潤,廣川類出版社/メーカー: オライリージャパン発売日: 2005/10/27メディア: 単行…

ラベルでつまる

いまテストをこんな風に書いている。 GET_COOKIES : { local $ENV{HTTP_COOKIE}; local $ENV{COOKIE}; ... my %result = get_cookies(); ... } SET_COOKIES : { stdout_is { set_cookies( ... ); } } テストするサブルーチンの名前をそのままテストブロック…

Catalyst::Plugin::Authentication

を使っている。 に書かれているままをとりあえず使ってみているのだけれど、中身見てないから原理がさっぱりわからない。 どうやって「ログイン済」「ログアウト」を判断しているんだろう。 いっしょに Session Session::Store::FastMmap Session::State::Co…

forwardとdetachとvisitとgo

まだまだCatalyst。 Controllerクラスで、$c->forward()と$c->detach()は、制御が帰ってくるかどうか(返ってくるかどうか)の違いだと覚えていた。 まあそれはあっているんだけれど、他にも違いがあった。 Controller/Login.pm sub index :Path :Args(0) { my…

Catalyst完全入門読書中

PerlフレームワークCatalyst完全入門作者: 山田祥寛出版社/メーカー: インプレスジャパン発売日: 2010/05/20メディア: 単行本(ソフトカバー)購入: 8人 クリック: 214回この商品を含むブログ (18件) を見る まだ途中。 ただ印象としては、Catalystの使い方…

Catalystで知ったこと

PerlフレームワークCatalyst完全入門作者: 山田祥寛出版社/メーカー: インプレスジャパン発売日: 2010/05/20メディア: 単行本(ソフトカバー)購入: 8人 クリック: 214回この商品を含むブログ (18件) を見る 買って読み始めたので、知ったことメモ。 フォー…

普通の文にラベル

ループにラベルを張るつもりが間違って次のようにしてしまった。 LOOP : my $i = 1; for my $num (1 .. 10) { EXPR; } ループではなく通常の文にラベルを張ってしまった。 あれ、これって動かないんじゃねーの?、と考えたのだけれど、しかし、僕の予想に反…

fat comma使うと綺麗に見えた

以下。 bless $argv => __PACKAGE__; binmode $fh => ':utf8'; my @grep = grep /abc/ => @poems; my $index = index $str => $search; my $join = join ' & ' => @words; push @array => $pushed; my ($first, $second, $third) = unpack('AAA' => 'MIX'); …

Perlで圧縮

zip Archive::Zip Lha Archive::Lha cab Archive::Cabinet(なくなってる?) rar Archive::Rar (圧縮ではないけれど) tar Archive::Tar なんでもあるもんだ。

JSON

はじめてJSONでの出力をして使えるようなことまでしたので、メモ。 data_api.cgi use JSON; my $json = encode_json([@data]); print "Content-type:application/json; charset=UTF-8\n\n"; print $json; ajax.html <html> <head> <script type="text/javascript"> function loadData() { if (window.XML</head></html>…

数値に文字列連結するとエラー

ちょっとはまったメモ。 数値リテラルの後に文字列連結演算子「.」を使うとエラーになる。 my $word = 777."Unlucky"; String found where operator expected at - line 1, near "777."Unlucky"" (Missing operator before "Unlucky"?)要するに「.」が小数点…

unpack()メモ1

perlpacktutを読んでる途中で覚えたことメモ。 以下のようなテキストファイルの処理を考える。 Date |Description | Income|Expenditure 01/28/2001 Flea spray 24.99 01/29/2001 Camel rides to tourists 235.00僕も多分にもれず、文字数決まってるならsubs…

crypt()で少しはまった

自分用メモ。 crypt()を使って暗号化していたのだけれど、途中から返される値が変わらなくなった。 my $key = 'enoden'; my $word; for my $alphabet ('a' .. 'z') { $word .= $alphabet; say crypt($word, $key), " [$word]"; } enkDmZCt3oHc2 [a] endoxO49…

overloadでマジックデクリメントその3

わかった。 fallback => 1 であとはよきに計らってくれるのならほんとに必要なとこだけ書けばいいんだ。 実際に文字列一文字前処理サブルーチンはプログラミングPerl Vol.1から。 MagicDecrement.pm package MagicDecrement; use strict; use warnings; use …

overloadでマジックデクリメントその2

昨日の続き。 overload - Perl の演算子のオーバーロードを行うパッケージ - perldoc.jp Fallback (フォールバック) "fallback"は、特定の演算子に対するメソッドが見つからない場合の動作を規定します。 "fallback" の value によって、3 つの場合がありま…

overloadでマジックデクリメント

そういえば演算子ってオーバーロードができたなーと思って前々回のマジックデクリメントをやってみた。 結論から言うとまだできてない。 なぜか以下のエラーが出てくる。 Operation "=": no method found, argument in overloaded package MagicDecrement at…

引数に同じ変数でインクリメントしたのとしてないのとを入れたときの値

気になったのでやってみた。 #!/usr/local/bin/perl use strict; use warnings; use 5.010; my $i = 1; sub say_arg { say "@_" } say_arg($i, ++$i, $i); say "--------------"; say "\$i => $i"; say "--------------"; say_arg($i, $i++, $i); __END__ 結…

マジックデクリメントって

ないんだ…。 というのも、アルファベット一文字の一個前の文字を知りたい状況になったのだけれど、マジック(マジカル)インクリメントは何かで見て知っていたので、それならと思ってやってみたらあえなく玉砕。 my $char = 'U'; my $prev = --$char; say $pre…

配列の添え字が偶数の要素だけ取り出す

$array[0], $array[2], $array[4]... my @array = 0 .. 99; my @even = even_elemnt(@array); sub even_element { my $i = 0; return grep ++$i % 2, @_; } Test. use Test::More; my @array = 0 .. 99; my @even = even_element(@array); for my $elm (@eve…

フォームデータ一括受け取り

昔。 my (%in, $buffer); if ($ENV{'REQUEST_METHOD'} eq 'POST') { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); } elsif ($ENV{'REQUEST_METHOD'} eq 'GET') { $buffer = $ENV{'QUERY_STRING'}; } for my $pair (split(/&/, $buffer)) { my ($name, $va…