みたいな数字のゼロ埋め作業をPerlで楽にやる方法。下記のように書くと便利です。001234sprintf関数は指定した書式で文字列を作成することが出来ます。応用して小数点の丸め込み(四捨五入)にも使えます。12.350をなくせばspace埋めも可能です。1234'浮動小数点数や16進数との返還などもsprintf関数でたやすくできます。08:10sprintf関数で自由自在に数字や文字列のフォーマットを指定するTweet広告を非表示にするもっと読むコメントを書く2018-05-09perlでHashの一部分をテストで確認したいときにsuperhashof便利やん。PASSこける場合はこんな感じ。22:37perlでHashの一部分をテストで確認したいときにsuperhashof便利やん。~良書紹介「雅なPerl」~Perl「初めてのPerl」の第7版が今年の1月に出ていたらしい。単行本(ソフトカバー)この商品を含むブログを見るこれこそまさしく「ザ・Perl入門書」ではあるとは思うけど、今日は「雅なPerl」という一風変わった本を紹介したい。全体で200ページ程度の量で、難しい背景や言語の仕組みに関わる話はすっ飛ばしてPerlを使って如何に書きたいことを書くか、その方法が章立ててまとまっている。(しかもラノベ調で)初学者(あるいは基礎がガバガバな半端者=僕)みたいな人が分厚い参考書を手に取る前にサクッと読みながら時々写経してみるのにぴったりな本だと思う。表紙から溢れ出る同人誌感はさておいて、この本はPerl入学式なんかでも立派な一参考資料として紹介されるくらい、その道の人も認めている本なのだ。雅が初学者目線で常に語ってくれるのでどこまでを一読で理解する必要があってどこからが応用(今後勉強していきましょうねー)な内容なのかがわかりやすい。Perlが得意とする文字列操作、特に正規表現に関する解説が特に充実している。今でもリファレンスとして時たまペラペラとめくる。200ページくらいでサイズもコンパクトで持ち運びしやすい。電子書籍が主流の現代において「重さ」「デカさ」はあまり重要視されないパラメータではありますが...。悪い点オブジェクト指向の説明に関しては12章まるまる使ってるとはいえPerlで、この短さで、なんとかしようとなるとやっぱり厳しい印象。この表紙だと外出先で開きにくい。うぅ...試されている...。Mongerおじさんに持っていないか聞くのが吉。ちなみに僕が持ってるのは第1版だけど第3版(Perl6の話とか追加)まであるらしい。第2版の表紙が一番好き。それから、この本に限ったことではないけどPerlは後方互換性が強いので古い参考書でも全然現役で勉強になることがたくさん書いてある。これが他の言語ではそうはいかない。先週見たQiitaの記事がすでに過去の遺産だったりする。Perlでもあんまり古い本とかサイトをみるよりは公式ドキュメント見ろよ、ってのはもちろん正論なんだけど。~テスト用にお手軽にstub化~Perl今日も今日とて、これまでなんとなくで使ってたモジュールを再度見つめ直す回です。github.comTest::Mock::Guardはテストで使えるモジュールとしてメジャーな模様。既存のクラス挙動を簡単にオーバーライドできる。PASS無駄にネストが深くならずに済む。聞くスタブとモックの違いについて。厳密に正しいかはあれですが、この記事が参考になりました。perl-users.jpスタブの場合は、それを利用する部分がテスト対象になります。中略)一方、モックの場合は、適用する部分そのものがテスト対象です。モックとスタブのどちらを使うのがよい状況なのかを判断できるようになります。ちなみに最近よく聞く?Test2にもメソッドをモックしてくれる君としてTest2::Mockというのがあるみたいなんですがこいつだとモックしたメソッドを何回呼ばれたかを知るcall_count同等の機能がない様子。techblog.kayac.comTest2についてはまた記事を書きたいと思います。~テスト用にお手軽にstub化~Tweet広告を非表示にするもっと読むコメントを書く2018-03-31Acme::Keyakizaka46をリリースした。PerlTL;DRAcmeモジュール群の存在を知って、Acme::Keyakizaka46を作った。公式サイトからメンバーの情報を引っ張ってくる適当なスクリプト(Python)を書いた。Minilaを使ってCPANにAcmeモジュールを公開したら簡単すぎて肩透かしを食らった。普段から仕事でPerlを書いている僕がAcmeの存在を知ったきっかけはつい最近で隣の席のエンジニアリーダー氏の机にあったAcme大全2015を見たことだった。donzoko.booth.pm知らない人のためにざっくりと紹介するとこのAcmeモジュールとはPerlの世界におけるジョークモジュールの名前空間でまさに「技術の無駄遣い」そのもの。詳しくは、qiita.comあたりを見て欲しい。Acmeモジュールのくだらなさにはまった僕は、色々と調べているうちに面白いモジュールたちに出会った。それがblog.kentarok.orgperl-users.jpsecondlife.hatenablog.jpsyohex.hatenablog.comといったキャラクターや実在のアイドルのデーターベースの役割をなすモジュールたちだ。「よしAcme::Nogizaka46作るかー!」となったのが今から1週間ほど前。..........しかし、すでにAcme::Nogizaka46は存在していることがわかった。d.hatena.ne.jpなるほどー、アイドルネタは諦めて某クソマンガのAcmeモジュールでも作るかーと思った矢先、上のブログで引用されているこの文章が目に止まった。Acmeが存在するアイドル2ユニットに共通していえることの一つに、どちらも紅白歌合戦に参加したことがあることが言えます。つまるところ、日本のAcme::アイドルが作られたのユニットは100%紅白出場しているなるほど、そう言う経緯でAcme::MomoiroCloverやAcme::Nogizaka46が作られているのであれば彼女たちのがあっても良いな、と思い作ろうと思ったのがAcme::Keyakizaka46というわけだ。(彼女たちの場合は出場願掛けではなく、すでに出場しているが...。)準備ベースとなるメソッドはAcme::MorningMusumeやAcme::Nogizaka46を再利用させていただくことにするとは言え、メンバー一人一人の情報はこちらで集計しなければいけない。いうことで、公式サイトから情報を引っ張ってくる簡単なスクレイピング用スクリプトを書いた。Soupというライブラリが使い慣れていたから。(コードは本当に書き捨てなので汚さとかは勘弁してほしい。)という事でこれにて欅坂とけやき坂のメンバー情報はすぐに集められた。実装?特に新しいことはしていない。欅坂はまだ卒業メンバーも出ていない(要出典)ので、その辺のロジックを抜いたのとあとは誕生日から年齢の計算をするロジックをもっと単純にしたくらいである。あとselectメソッドでcenterを指定すると強制的に平手友梨奈の情報が返ってくる。テストもいくつか追加した。欅坂で一番身長が高いのは羽生ちゃんで、これはしばらく更新されないだろうからベタ打ちで書いている。(笑)[参考]tech.nikkeibp.co.jpMinilaでリリース自分で書いたテストが無事通ればあとはCPANに上げるだけ。待ってくれ??ここからの知識がこの時点で皆無だった僕は一瞬途方にくれることになった。Perl、枯れ切った言語と揶揄されるだけあって少しググれば湯水のごとく情報が出てくる。Minilaというモジュールオーサリングツールを使えば初心者でも簡単にCPANに自作モジュールをあげられることがわかった。手順は以下の記事が参考になった。releaseすればよい。エラーが出てもメッセージが親切なのでつまづくことは少ないはずだ。~/.pauseにPAUSSEアカウントのユーザ情報を載せておかないと上手くいかないことに注意。{{YOUR_PAUSE_PASSWORD}}(用意しておかないとこんなエラーが出る。)それから今回はPODの書き方が一番戸惑ったのだがMinilaを使うとtestの時点で文法チェックしてくれるのでありがたい。あとはPAUSEからメールが来たりなんなりするけど特につまづくことはないはず。寝てCPANに出てくるのを待つだけ。metacpan.orgどーんっ!完成。これから制作期間5時間程度で作ったモジュールではあるが、欅坂というか坂道グループ全体で今年?来年?合同オーディションがあることが発表されたばっかりなのですぐに修正を入れる必要が出て来そう。欅坂はもう良くないですか...また、当初やろうと思っていたグループ内ユニットの情報をまだ入れていないのでこれもやりたいと思っている。ゆいちゃんずとかゆいちゃんずとか。www.youtube.comさて、要領は掴んだので今度はクソマンガのクソAcmeモジュールでも作るかー。19:53Acme::Keyakizaka46をリリースした。モジュールの紹介記事です。モジュールの紹介記事です。~Perlプライベートでもお仕事でもお世話になっています。形での値の引き渡しができることは知ってるのだが、withを使った拡張によっていくつか応用が効くみたいであり、それをイマイチ把握してなかったので今回は適当なスクリプトを書いてそれらを確認してみた。モジュール名とりあえず手っ取り早い。@INC';...っていうのをよく見るけど改行がなく見づらい。@INC';Dumper使ったこっちのほうがわかりやすい。l.........(一覧で使えるモジュール全部出る).........これ今回ググってて初めてこれを知った。内部はExtUtils::Installedを使って少し見やすくしたものっぽい。search.cpan.orgついでに今回色々ググってたら組長のブログを見つけた。16:58猫でもわかる?Perlモジュールのもろもろ確認術Tweet広告を非表示にするもっと読むコメントを書く2017-12-18Perlで同じ内容のメソッドを別名で実行したいときのTipPerlTipというか小手技。中身は同じ内容のメソッドだが呼び出し元の都合で別名で読んだ方が可読性が上がる、メンテナンスがやりやすいみたいな場合がごく稀にある(と思う)。「その実装自体を見直した方が良いのでは?」というのはもっともかもしれない。