私がプログラミングをするときの第一言語は Perl です。周囲には「私は Perl 以外のプログラミング言語はよくわかりません」と念を押すくらいには Perl ばかり書いています。 しかし、2018年の今日 Perl は一定の役割を終えた古い言語とみなされ、メインストリームからは退いたと多くの人が考えています。10年前の2008年を思い返しても、複数の対抗言語の登場で Perl に陰りがあった事は事実ですし、今日のメインストリームに Perl が居ないことを改めて言う必要も無いでしょう。 それでもなぜ私は Perl を書き続けるのか、少し考えてみました。 私と Perl 私と Perl との本格的な出会いの場は、大学院を卒業した2003年に入社したIT企業です。その会社がメインで使用していたプログラミング言語が Perl だったので自然と Perl を書くようになりました。 2003年3月
Perl Hackers Hub 第44回LINE Messaging APIで作るchatbot―LINE::Bot::APIとngrokでお手軽に!(1) 本連載では第一線のPerlハッカーが回替わりで執筆していきます。今回のハッカーは本連載の監修も務める大沢和宏さんで、テーマは「LINE Messaging APIで作るchatbot」です。 本稿のサンプルコードは、本誌サポートサイトから入手できます。 LINE Messaging APIとは Messaging APIはLINEのプラットフォーム上で動作するchatbot[1]を開発するためのAPIです。2017年9月に公式SDK(Software Development Kit)(注2)とともに正式リリースされました。開発者はMessaging APIを利用して、LINE上で動作するchatbotを開発できます。 筆者は現在L
はじめに DBIxといえばSkinnyです。nihenです。 DBIxトラックといいながらDBIの話でもよいみたいなのでに書いたことの続編tipsを一つ書きますです。 DBI->connect_cachedとforkの罠 DBI->connect_cachedは同一プロセスで生成された同一connectオプションのデータベースハンドルをキャッシュしてくれそれを返してくれる便利なものなのですが、これとforkの組み合わせにはやはり罠が存在します。 use strict; use warnings; use DBI; use Data::Dumper; my $dbh = DBI->connect_cached('dbi:mysql:sandbox', 'sandbox', 'sandbox') or die $DBI::errstr; $dbh->do(q{DROP TABLE IF EXI
perl は system perl じゃなくて perlbrew で入れて、アプリで必要な CPAN モジュールは全てアプリのディレクトリ下の extlib というディレクトリにインストールする方式は個人的にはいい感じだよなぁと思いつつ、cron とか daemontools がいつもどうやるのが正解なのか分からず困ってた。 またセットアップする機会があったので色々考えた結果、こんな感じなら割とすっきりした感じになった。 env このファイルがキモで、アプリのディレクトリに移動しつつ、いい感じに perl とか PATH とか@INC を設定して、渡されたコマンドを実行してくれる。 # perl -v This is perl, v5.8.8 built for x86_64-linux-thread-multi # ./env perl -v This is perl 5, versi
モダンなPerl環境構築方法をご紹介したいと思います。 perlbrewは、ホームディレクトリに複数のperlをインストールして切り替えをしてくれるツールです。 perlbrewのインストール 以下のようなコマンドを実行すると、prebrewをインストールできます。 $ curl -kL http://install.perlbrew.pl | bash perlbrewのインストール方法はいくつかあります。 他の方法は以下のサイトを参照して下さい。 http://perlbrew.pl/ perlbrewコマンドを使うためにインストールされたコマンドにパスを通す設定が必要です。 bashならbashrcに以下のような設定を書くと良いでしょう。 source ~/perl5/perlbrew/etc/bashrc perlbrewでPerlをインストール 以下のコマンドで、利用できるPer
* [Perl] 間違ったPerlコミュニティの女性の目立たせかた 今月初め、CPANからあるAcmeモジュールが削除されました。そしてExtUtils::MakeMakerなどで有名なSchwern氏がそのことについてHow Not To Highlight Women In Perlという記事を書いていました。私は『Acme大全2012』をつくる準備の過程でこの一連のやりとりをみて、考えさせられ、紹介したいなと思いました。そこで本人の了解を得てここに翻訳したものを掲載します(『Acme大全2012』の付録にも掲載しています)。モジュール名がAcmeまで出てしまって本来の記事の趣旨に厳密には反しているのですが、ご寛恕ください(本人にはどちらにも掲載することの了解を受けてます)。 間違ったPerlコミュニティの女性の目立たせかた 要約:ジェンダーの匿名性は防御である。男性が優位なコミュニテ
惜しまれながらも10年の歴史に幕をとじたPerlカンファレンス「YAPC::Asia Tokyo」。その運営を担ってきた牧大輔さん(@lestrrat)だが、新たに「builderscon」なるカンファレンスを立ち上げる。ゼロからスタート、「技術を愛する全てのギーク達のお祭り」にかける思いとは? YAPC::Asia Tokyoで得た手応え。そして次へ CAREER HACKでも協賛するなど応援してきた「YAPC::Asia Tokyo」だが、惜しまれつつ10年にわたる歴史に幕を閉じた。そんなYAPC::Asia Tokyoの運営を担い続けてきたのがJapan Perl Association立ち上げにも携わった牧大輔さん(@lestrrat)だ。 そんな牧さんが新たに「builderscon」なる技術カンファレンスを立ち上げるというニュースが飛び込んできた。 2016年12月3日に第一回
元ネタ Google先生に尋ねたところ2010年のadvent calendarで モジュールのバージョンを確認するときどうやってますか? にイロイロ紹介されていましたので、いくつか自分で試してみました。 VERSION変数をprintする $ perl -MDBI -le 'print $DBI::VERSION' 1.625 もっともシンプルな方法でしょうか。 pmversを使う # pmvers DBI 1.625 cpanm pmversでインストールするとpmtoolsというコマンド集のようなものが入ります。 pmversコマンド以外にも例えばpmallと打つとすべてのインストール済みモジュールがバージョンと共に表示されます。 巨大なバージョン番号でuseして意図的にエラーを表示させて確認する # perl -e 'use DBI 9999' DBI version 9999 r
インターネット、Go、JavaScript、Python、Perl によるプログラミング、ISUCON、Windows、Raspberry Pi など、興味のある事について気まぐれに記事を書いています。 Perl関係のツイートをリツイートするうざいボット @AE_PerlIsm を動かして得られた知見についての記事です。 キーワードを含んだツイートは、Twitter Streaming API を AnyEvent からいい感じで取得できる AnyEvent::Twitter::Stream で取得しているのですが、この接続が12~24時間に1回くらい切られるようなので、再接続処理が必要だと思います。 そのコードは以下のような感じでやっています。 注意点は、 接続状態から切れた時は wait なしで再接続する。 接続成功は、30秒おきに届く on_keepalive で判明する場合もある。
本連載では第一線のPerlハッカーが回替わりで執筆していきます。今回は普段Webアプリケーションの開発を行っているtokuhiromさんで、テーマはWebアプリケーションフレームワークAmon2です。 Amon2とは? こんにちは。tokuhiromです。本稿では、筆者が中心となって開発を進めているAmon2というWebアプリケーションフレームワークについて説明します。 Amon2は、次のような特徴を持つWebアプリケーションフレームワークです。 PSGI/Plackベース Amon2はHTTP::Engine/PSGI/Plackの開発/制定に初期のころから関わっている筆者が作成したWebアプリケーションフレームワークです。そのため、Plackの部品をできる限り利用することにより、少ないコードベースでWebアプリケーションフレームワークを実現しています。これにより学習コストが低くなってい
知ってそうで意外と知られていないperlの小技 10選という記事にある「モジュールのメソッドを上書きする」という項について考えてみました。記事にあるやり方では、 本来のメソッド(コード)のリファレンスを保存 型グロブによりメソッドを上書き 上書きしたメソッドを実行 保存していたコードリファレンスを更に上書き となっていたのですが、こうするよりも、上書きが必要な箇所のみをブロック({ ... })で囲み、その中でlocalを使って上書きする方がよいのでは、と思ったのです。具体的に書くと以下の通り。 use strict; use warnings; #---------- package Foo; sub something { print "something original.\n" }; #---------- package main; Foo->something(); { no
おがた (@xtetsuji) です。 2015年4月3日(金曜日)、1社目で最後まで一緒に働いていた後輩と二人で久々に飲み会をしました。そこで考えて語ったレガシー開発論など、公開しても良さそうなところを書いてみます。私は2014年1月に退職していますが、後輩は今も在職しています。 飲み会 (@ 居酒屋 だいぶつ in Shibuya, 東京都) https://t.co/Xl4yJEqZRK pic.twitter.com/yA7ekhowXX — OGATA Tetsuji (@xtetsuji) April 3, 2015 書きたいことはざっと書いたのですが、推敲がうまくできなくて長文になってしまいました。暇な時に流し読みしていただくのがちょうどよいかもしれません。長いブログ記事、Kindleで電子出版したほうがいいかもしれませんね…。 執筆依頼やモジュール類のドキュメント化依頼は随
先日↑なタイトルで $res->base を使うといける、とか書きましたがデマでした。すいません。消しちゃったので permalink なくなりました。もしブクマしてくれた人がいたら重ねてすいません。 で、 HTTP::Response のマニュアルをちゃんと読んで、今度は大丈夫かなと思ったのでメモ。 検証コード リダイレクト先の URL を得るには my $response = $ua->get($url); my $uri = $response->request->uri; print $uri;これでいい。 $uri は URI モジュールのインスタンス。ふつうに get とかして帰ってくる $response が最終的に 30x じゃないステータスコードが返されたレスポンスのオブジェクトなので、そのレスポンスを発生させたリクエスト (->request) をたどってその uri
英語の大文字と小文字を入れ替えたい場合に以下のようにしてもダメだ。 my $str = "How I wonder what you are.\n"; $str =~ s/[A-Z]/lc($&)/ge; $str =~ s/[a-z]/uc($&)/ge; print $str; http://ideone.com/IJRrI すべて大文字になってしまう。 そこで、tr///なるものを使いましょう、と。 my $str = "How I wonder what you are.\n"; $str =~ tr/A-Za-z/a-zA-Z/; print $str; http://ideone.com/l1nsG tr/置換元の文字リスト/置換先の文字リスト/オプション これを使うと、置換元の文字リストから置換先の文字リストへの変換が行われます。 ということだけど、 なんでA-Zをa-zに、
Encode.pmのメンテナDan Kogai氏による、日本語数字とアラビア数字の相互変換を行うPerlモジュールです。 サンプル - #!/usr/bin/perl -w use strict; use utf8; binmode STDOUT, ":encoding(cp932)"; binmode STDERR, ":encoding(cp932)"; use Lingua::JA::Numbers ':all'; my $n = "9876543210"; print "$n -> ", num2ja($n), "\n"; $n = "1234567890"; print "$n -> ", num2ja($n, {style=>'daiji'}), "\n"; $n = "54321"; print "$n -> ", num2ja($n, {style=>'hiragana'}
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く