YAPC::Hakodate 2024でのトークです https://yapcjapan.org/2024hakodate/
プログラミング言語「Ruby」の国内最大のビジネスカンファレンス「RubyWorld Conference」。Rubyの先進的な利用事例や最新の技術動向、開発者教育の状況などの情報を発信することで、「Rubyのエコシステム(生態系)」を知ることができる場として開催します。ここで登壇したのは、Rubyアソシエーション 理事長のまつもとゆきひろ氏。プログラミング言語の過去、歴史から学ぶ教訓について発表しました。全4回。3回目は、「Second System Syndrome」について。前回はこちら。 退屈は最大の敵 まつもとゆきひろ氏:次はPerlですね。ここまでですでに4回ぐらいPerlの話題が出てきています。なぜかというと、私はPerlが大好きなんですね。実は、Perlが大好きなんですが、Perlのプログラミングは大好きじゃないんですね。あと、Perlのソースコードも大好きじゃないんですね
Perl に substr という関数があります。文字列を部分的に切り出したり、部分的に置換できる関数です。 典型的な使い方はこんな感じ、 my $s = 'The black cat climbed the green tree'; # 4文字読み飛ばしてから5文字取り出す my $color = substr $s, 4, 5; print $color; # => 'black' # 14文字読み飛ばしてから7文字分を別の文字列で置換する substr $s, 14, 7, 'jumped from'; print $s; # => 'The black cat jumped from the green tree' さて、Perl 界隈で有名な書籍「初めての Perl」を読んでいたら、この substr 関数について次のように書かれていました。 ここで本当に素晴らしい機能を披露しま
「YAPC(Yet Another Perl Conference)」は、Perlを軸としたITに関わるすべての人のためのカンファレンスです。ここで面白法人カヤックのmacopy氏が「デプロイ今昔物語 〜CGIからサーバーレスまで〜」をテーマに登壇。続いて、mod_perl、FastCGI、PSGIについて話します。前回はこちらから。 mod_perlの手法 macopy氏:というわけで、mod_perlの話をします。mod_perlは「Apacheの中にPerlのインタプリタを組み込んでしまいましょう」という発想(のこと)ですね。 Apacheの中にもMPMという、どういうふうにプロセスを立ち上げておくか、リクエスト・レスポンスを処理するかを決めるモジュールがあります。それによってプロセスやマルチスレッドを処理したりするんですが、そのワーカーの中にmod_perlがロードされて、その中に
プログラミング言語「Perl」の開発と普及を促進する団体として設立された「The Perl Foundation」は、適切な場合において「The Perl and Raku Foundation」(略称:TPRF)の名称も使用することを発表しました。 前述の通り、もともとThe Perl FoundationはPerl言語の開発と普及を目的に設立された団体です。 しかし高機能化し複雑になってきたPerlの実装を見直し、次世代のPerlにふさわしいPerlを作ろうと2000年に開発が始まり2015年に登場したPerl 6は、Perl 5とは互換性のない言語となりました。 そしてそのことを明確にするために、2019年にPerl 6は「Raku」へと名称変更が行われました。一方でPerl 5も開発が途絶えることなく、今に至るまで継続して改善が続けられています。 これにより、The Perl Fo
こんにちは、エンジニアの id:mp0liiu です。 8月28日(土)の Learn Languages 2021 というイベントの Language Update というセッションで@charsbarさんと一緒に2018年以降のPerl5やPerlコミュニティの最新動向について話してきたので、そのとき話した内容に補足などしつつ記事にしていきたいと思います。 配信アーカイブはこちらから見れます。 時系列 2019/5/22 Perl5.30 リリース 2020/6/20 Perl5.32 リリース 2020/6/24 Perl7の発表 2021/5/21 Perl5.34 リリース Perl5.30 の変更点 正規表現や文字周りの細かい改善などはありますが、正直めぼしい変更点が見られないです。 Perl5.32 の変更点 isa 演算子の実装 値があるクラスのインスタンスもしくはそのサブ
この記事はPerl Advent Calendar 2020と琉大 Advent Calendar 2020の11日目の記事です。 PerlはPerl5になって長いですが、現在の最新の安定版のバージョンは5.32です。 Perl5.32で取り入れられた(厳密には5.31からですが)のおもしろ機能として連鎖比較(Chained comparisons)が存在します。 今までPerlで数値などが特定の範囲に含まれているかどうかをif文で判定するには次の様に書く必要がありました。 if (10 < $n && $n <= 20) これがこう書ける様になります!!! if ( 10 < $n <= 20 ) {...} 便利!!!!!!!!!!!!!!!!!!!!!!!! ...........というわけで、この便利な連鎖比較がどの様に実装されているかを探検してみます。 言語処理系の実装 さて今か
このエントリは, 「Perl Advent Calendar 2020」の9日目の記事です. qiita.com 昨日のエントリは, id:xtetsuji さんの「xargs や find と合わせて使う・代わりに使う Perl」でした. qiita.com 実は最近異動をしていた id:papix です. 異動後もPerlをモリモリ書いている日々ですが, 移動先のチームのプロダクトで同僚の id:mizdra が導入していた Test::Snapshot が便利だったので紹介します. metacpan.org Test::Snapshot Test::Snapshotは, その名の通り「スナップショットテスト」を提供するモジュールです. スナップショットテストとは, 予め「スナップショット」と呼ばれる期待値を生成しておき, テストを実行する際には実行結果とスナップショットを比較してテス
近年のソフトウェア開発では、RenovateやDependabotといった依存関係更新のためのツールが普及していて、ツールの支援を借りながら依存ライブラリを更新していく開発フローが広まってきている。 これらのツールは、package.jsonで管理されているライブラリだったり、Dockerfileで指定しているイメージだったりを自動的に最新版に更新してPull Requestを出してくれるので、人間は内容を確認してマージボタンを押すか、変なところがあったら手直ししてからマージしていくだけでよい。 はてなでの開発フローでも使い倒していて、先月くらいにも、社内で共有して使ってる設定を公開したりしていた。今ではRenovateのない暮らしに戻ることは考えられないくらいに広まっている。 developer.hatenastaff.com 普段、仕事ではPerlやTypeScriptを書いていて、T
こんにちは!株式会社VOYAGE MARKETINGで働くエンジニアの yopidax です。 約20年ほど続くサービス、ECナビの技術的負債の返済に取り組んでいます。 ecnavi.jp 今回は直近で、レガシーコードを大量に削除したので、そのアプローチをご紹介したいと思います。 目次 目次 解析の対象と抱える課題 アプローチ 実行されるファイルを洗い出す ログを出力するモジュール 実行 ログのサンプル いざ、大量削除 Perlファイルをgrepする リリース単位を細かくする 結果 工数 実績 まとめ 合わせて読みたい 解析の対象と抱える課題 ECナビを長年支える、Perlで書かれたバッチが対象です。コードはGitLabのリポジトリで管理されていて、規模をまとめるとこんな感じです。 ファイルの数 バッチ関連全体 : 3,315 うち、Perlファイル(.pm, .pl) : 1,111 P
リスト処理に有用な関数群を収録している Perl モジュール List::Util はコアモジュールであり、原則的にどの Perl 環境でも同梱されています。 とはいえ、Perl のバージョンアップに伴って、同梱されている List::Util もバージョンアップしており、収録されている関数にも差異があります。2010年前後の古い Perl だと外部モジュール List::MoreUtils を別途インストールしないと出来なかったことも、2020年代の新しい Perl であれば List::Util のみで完結することもあります。 以下、Perl のバージョンと、それに同梱されている List::Util のバージョン、そしてその List::Util が提供する関数一覧を表にしてみました。なお Perl 5.8 より前のバージョンの Perl は省略しています。 Perl List::U
モチベーション NodeJS である npm パッケージを試したいとなった場合 RunKit is Node prototyping がとても便利です。任意の npm パッケージをインストールができ、なおかつ他人のその結果を共有できます。例えば、これは誰かと一緒にある npm パッケージの使い方の相談をするときによく使います(e.g. lodash の groupby の使い方を示したり)。 Perl でも同様に任意の CPAN モジュールをインストールして、他人に結果を共有できるサービスがあると便利なのですが、一般公開されているものを見つけることはできませんでした。 そんな気持ちを持ちつつ、ある日突然 Google Colaboratory を使えば目的を達成できるのではと気付いたので、これを紹介します。 やり方 perl.ipynb · GitHub にアクセスします。 画像の Ope
Perl 6の名称を正式に「Raku」へ変更するというGitHubでの提案に対し、Perl生みの親のLarry Wall(TimToady)氏が支持を表明している(Larry Wall氏のコメント、 blogs.perl.orgの記事、 The Registerの記事)。 次世代Perlとして開発されていたPerl 6だが、正式リリース後もPerl 5の開発が進められており、「Perl」といった場合にPerl 5を指す状態が続いている。そのため、Perl 6の名前に「Perl」が入っているのはわかりにくいとして、8月からGitHubで名称変更が議論されていた。このスレッドでは「Raku (楽)」という日本語について、勘違いも含めてちょっと面白い議論になっている。 もともと「Raku」という名前は昨年、Perl 6のエイリアスとして使えるもう一つの名前を付けてほしいというZoffix Zne
環境は macOS 10.14.4 で go1.12.5 です。 まずは次のコードを読んでみましょう package main import ( "fmt" "io/ioutil" ) const script = ` #!perl print "Hello, Perl World!!"; __END__ ` func init() { ioutil.Discard.Write([]byte(script)) } func main() { fmt.Println("This is Go world!!") } これをビルドして実行してみます go build -o main main.go こうすると main という実行用のバイナリができますね。 通常通り実行してみましょう。 $ ./main This is Go world!! 今度は Perl で実行してみましょう $ perl
qiita.com こんなワンライナーがあります: % perl -E 'say$!=24' Too many open files これの正体に迫っていきたいと思います。 どのように解釈されるのか まずはこれがいったいどのようにParseされるのかを知るために、 -MO=Deparse を付けて実行してみましょう。 % perl -MO=Deparse -E 'say$!=24' use feature 'current_sub', 'evalbytes', 'fc', 'say', 'state', 'switch', 'unicode_strings', 'unicode_eval'; say $! = 24; -e syntax OK say $! = 24 キモはこれです。 $! という変数に 24 を代入して、その式の結果を say が受け取っています。 Perlの代入式は左辺
概要 Perlにおける動的なモジュールロードのメリットとデメリットについて、そしてどういう場合に動的なモジュールロードを行うといいか、僕が考えていることを記します 例のコードや具体例の説明などはPerlの文脈で行っていますが、動的なモジュールロードが可能な言語ならどの言語でも似たような利点と欠点が発生することになると思います ご指摘などあればコメント欄で教えていただけると幸いです。 動的なモジュールロードを行うことによるメリット アプリケーションの起動にかかる時間を短縮できる モジュールをロードするタイミングをコードを実行する直前にまで遅らせることができるので、アプリケーションの起動にかかる時間を短くすることができます。 高速化を意識しているCPANモジュールなどで、このようなコードを見かけることが多い気がしています。 例えば Class::Accessor::Lite ではこのようなこと
(2024年リリースの Perl 5.40 まで対応しています) Perl5 は 2010年リリースの 5.12 以降、ほぼ毎年ペースでメジャーバージョンアップしています1。つまり 5.x の偶数 x が +2 されています。 Perl は後方互換性をとても重視した言語で、メジャーバージョンアップで過去の Perl プログラムが動かなくなることはほぼありません。また、バージョンアップによって変わる部分の多くが、速度的な改善であったり、限定的な状況におけるセキュリティ改善だったりといった、インターフェースにかかわらない部分です。 とはいえ、Perl も後方互換性を崩さないよう配慮した上で、実験的な機能として新しい組み込み関数や文法を追加することがあります。 そのときに活躍するのが feature プラグマ です。この記事ではそれら実験的な機能の登場バージョンをまとめました。 文字コード関連の
この記事は「Perl Advent Calendar 2017」の 25 日目の記事です。 まさか全部埋まるとは思っていませんでした。これも皆さんのおかげ様です。 ありがとうございました! qiita.com Perl には隠れ演算子なるものが存在します。 これらは、言語開発者が意図して作ったわけではなく、偶然発見されたものです。それを誰かが命名することで有名になっていきました。 今回はそれらの演算子を perlsecret に沿った形でお届けします。 環境は Perl 5.26.0 で Mac OSX Elcapitan です。 隠れ演算子一覧 Venus 0+ +0 Venus 演算子は文字列を数値にキャストしてくれることで有名な演算子です。 print 0+ '23a'; # 23 print 0+ '3.00'; # 3 print 0+ '1.2e3'; # 1200 print
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く