Dismiss Join GitHub today GitHub is home to over 20 million developers working together to host and review code, manage projects, and build software together. Sign up
えてして、プログラミングにおけるバグの発生源は、使い方をまちがえていることに起因するものも多い。 猫を電子レンジでかわかす人がいるように。 そもそも chomp() という組み込み関数はなぜ必要なのか。 Perl5 では、データを行単位で処理するということが重視されたインターフェイスになっている。これは一般的なテキスト処理の頻出パターンだからだ。 while (<>) { chomp; say if /foo/; } これは、入力データを行ごとにとりだし、改行をとりのぞき、/foo/ という正規表現にマッチする行だけを表示するというプログラムだ。 Perl5 を知っている人なら、だれもが簡単に理解できる。 ここで $/ という変数が問題となる。$/ は、行の区切りがはいっている特殊なグローバル変数で、awk でいうところの RS にあたるものだ。 この $/ を変更することにより「行」の区
Thanks to everyone who entered the Haiku Contest this year. We hope to have it again next year! Perl Conference 4.0 Haiku Contest Finalists Prizes: First Prize: O'Reilly voucher VA Linux cube Second Prize: O'Reilly voucher ActiveState pack Third Prize: O'Reilly voucher Honourable mentions: Perl Mongers Surplus T-shirt A special thanks to our sponsors for donating the prizes! Dishonourable Mention
JavaScript 僕はもともと VisualStudio で JavaScript を書いていて、 VisualStudio の、どのバージョンからだったからか忘れてしまいましたが、「これからは Web だ」って言い出したときに実装された JS 用の Intellisense がかなり高機能で、型推論ばりばりで、感動して JS 書いていたんですが、なにせ色々ありまして、私の開発機が会社も自宅も Linux になってしまったこともあり、しばらくお別れしておりました。 で、去年くらいに「 Intellisense と同じくらいすごい」と評判になったのが WebStorm で、確かに同じくらいすごい!(馬鹿っぽい感想)。 が、これもまた色々ありまして手放し、今は Emacs を使っておりまして、と言うのも、今は tern てのがありまして、これがですね、私 donate もしたんですが、同じ
普段Perl書いてて,メソッドのシグニチャ変えたときプロジェクト中の呼び出しを手で書き換えてた. たくさんあると疲れるので,ソースコード中の,メソッドの呼び出しと引数を置き換えるプログラムを作りたい. これができれば,非推奨なメソッドの呼び出しを新しいメソッドに自動で置き換えたり,メソッドのシグニチャ変えたときに機械的に置換できる. 以前,トークンを置き換えるのを作った.これを使えば,ifとunlessを置き換えられる.1トークンだけ置き換えできても,あまり役に立たない.トークン単位は以前やったので,今回は文単位で置き換えしてみる. PPI::Transformを使ってソースコード中のトークンを置換する - hitode909の日記 静的解析して置き換える PPI::Transformを使って,ソースコードを静的解析して置き換えることを考えた. PPIでトークン単位に分割して,指定したトー
精神の時の部屋でお馴染みのはてなインターン(8/12 - 9/6)に、 Perlの書けない情弱女子大生が参加してきました。 photo by Norio.NAKAYAMA はてなインターンのいいところ *Webアプリ開発をひと通り体験できる 詳しくは インターン前半まとめに書きますが、 はてなインターンでは設計からサーバーサイド/クライアントサイドの実装までを2週間で体験することができます。 毎日午前中に講義を受け、午後にはその話題に関連する課題が出されます。 わからないこともたくさんありますが、 スーパーエンジニアさんが学生2人に対して1人メンターとして常についてくれるという最高に贅沢な環境でプログラミングをすることができます。 楽しすぎて定時には帰れませんでした。 *エンジニアになりたい学生にとって最高の環境 エンジニアになりたい学生にとって最高の環境とはなんでしょうか。 6万円以上す
Devel::Cover::Report::VimででC0なカバレッジのコードを vim で表示 - dann's blog - # 本当であれば, Devel::Cover::Report::Emacs的なものを使ってすべき なんでしょうけど, HTMLを解析して表示させるようなものを作ってみました. Devel::Cover::Report::Compilationというものがあり, compilation-modeで 使えるものがあるみたいなのですが, よくわかりませんでした. あと作りかけ(?)のリポジトリもあったんですが, 何もなかったので新規に作っていいかなと思いました リポジトリ https://github.com/syohex/emacs-devel-cover Requirements Emacs24 configured with libxml2 依存パッケージは特に
よく miyagawa さんとかが comaint が云々といっていますが、意外としられていないのが comaint の実態です。 まずは PAUSE の処理フローについて考えてみましょう。 まず minil release とかして tar ball を PAUSE のサーバーにアップロードします。この時、アップロード先は authors/id/M/MO/MOZNION/HTML-Shakan-0.18.tar.gz とかになります。 そうすると PAUSE のインデクサがブンブンと動きだして、META.json の provides セクションまたは .pm を解析して、package とバージョンの情報が抽出され、データベースに登録されます。 この際、新規ネームスペースや、自分がもってるネームスペースならいいのですが、他の人がもってる namespace の場合には UNAUTHOR
Python使いとしては「なぜ国内でPerlが急速に萎んだのか」について一言ツッコみたいところがあります。 >遂にPerlにとどめを刺したのはPythonである。守備範囲は当然ながらPerlと駄々被りで えっ、PerlとPythonの守備範囲がだだかぶりって、著者の観測しているそれぞれの言語の「守備範囲」ってどんだけ狭いんでしょう? まあそんな重箱の隅をつつくのはやめておきましょう。このエントリーには結論の文章(の一部)はとても素晴らしいです。 >10年でここまで時代は変わる。今のメインテクノロジーも明日は我が身だ。 >変化の速い時代に生きる我々に必要なのは本質を学ぶ事だ。 >もっと10年20年たっても色あせない情報工学を身につけなければならない。 そう、そこで拙著「コーディングを支える技術」のような本が必要になるわけです!(宣伝) ちなみに僕自身は仕事でも趣味でもPerlは使っていません
Carton v1.0.0 is released on CPAN. Since the first announcement at YAPC::NA 2011, I’m sure it has taken more time than necessary, but after my attempt to grok Ruby’s bundler more, i refactored and rewrote most of the code, and I think it’s usable for the most of production apps. I’ve been using it on my production website that handles millions of requests, and I know a lot of businesses use carton
昨日のはまったエントリ 関数の返却値をそのまま、ハッシュの値に詰め込んだ場合、リストコンテキストとなるんですなぁ。ハッシュは配列の一種だから当然なんですが・・・ 以下のソースを見るとよくわかります。 use strict; use warnings; use Data::Dumper; sub test(){ wantarray? (1,2):1; } my $hoge = { aaa=> test()}; print Dumper($hoge); $hoge = { aaa=> scalar test()}; print Dumper($hoge); で、結果。 $ perl test.pl Odd number of elements in anonymous hash at test.pl line 9. $VAR1 = { 'aaa' => 1, '2' => undef }; $
本トークでは、私が開発しているCompilerモジュール群(Compiler::Lexer, Compiler::Parser, Compiler::CodeGenerator::LLVM)を用いて、Perlコードがブラウザ上やiOS上で動作する、これからの新しいPerlプロダクトのかたちをお見せできればと思っています。 時間が余れば、上記モジュールを静的解析ツールとして利用した場合に得られるメリットについても、作成したモジュールを交えながらご紹介したいと思います。 ※どのモジュールもまだ開発途中ではありますが、当日はできるだけ多くのアプリケーションを動かせるようにして臨みたいと思っています。
Perl5.10から実装済み 「~~」で表される 真か偽を返す 2つ被演算子(オペランド)をどのように比較するのか自ら判断する. 例 #スマートマッチ演算子 say "I found Fred in the name !" if $name ~~ /Fred/ #等価 print "I found Fred in the name !" if $name =~ /Fred/ 例 マッチタイプ %a ~~~ %b ハッシュのキーが全て等しい %a ~~ @b 少なくとも%aのキーの1つが@bに含まれている %a ~~ /Fred/ 少なくとも%aのキーの1つがパターンにマッチする @a ~~ @b 配列の内容が等しい @a ~~ /Fred/ 少なくとも1つの要素がパターンにマッチする @a ~~ 123 少なくともひとつの要素が123である @a ~~ 'fred' 少なくともひとつの要素
Perl を Crash させたい。そんな欲求を抑えきれないあなたのために、いくつかの方法を教えよう。 いろいろな crash unpack で不正アクセス perl -e 'unpack "p",0xdeadbeef' pack において 'p' は A pointer to a null-terminated string. を意味する。不正なメモリ領域にアクセスすれば死ぬのはあたりまえである。 overload の中で再帰する perl -e 'use overload q{""}=>sub{"$_[0]"};$a=bless{},main;"$a"' overload の stringify させる部分などで無限ループにおちいると、segv する。 このバグは昔から知られており、ticket が切られているが、なおっていない。 @INC の中の coderef で再帰する perl
Q2 になったので月に1回くらいは日本語で書いてみることにした。 ここ数年で Perl に起こった良いことは2つある。 ひとつは PSGI/Plack, cpanminus, carton, cpanfile などいろいろ良いものが他言語から輸入されたことで、Perl で書かなくてはいけない時の面倒が軽減された。それぞれ Ruby でいうところの Rack, gem (1), Bundler, Gemfile に対応している。 もうひとつは Module Counts にみるライブラリ数の推移や、Moose の開発者で Perl 5 にメタオブジェクトプロトコルを入れるはずの Stevan Little が Perl is not Dead, it is a Dead End なんて言い出すくらい、だんだん衰退していることで、なんというか妥当な世代交代だと思う。 Perl で、たとえばなに
JVNでも公開されていますが、perl 5.8.2からperl 5.16系までのバージョンでハッシュ値の計算に対する脆弱性が報告されています。 perl 5.16系であれば perl 5.16.3、5.14系であれば perl 5.14.4 で修正がされていますので、アップグレードを推奨されています。 すでにEOLとなっているperl 5.8系、5.10系、5.12系ではgit レポジトリに存在するパッチを適用することでこの件に関しての修正を行う事ができます (perl 5.8 -> レポジトリ 対象コミット、 perl 5.10 -> レポジトリ 対象コミット、 perl 5.12 -> レポジトリ 対象コミット 各ベンダー提供のperlも自前でインストールしたperlもアップグレードが推奨されています。
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く