名もなき未知

エンジニアリングとか、日常とかそういうのをまとめる場所。

Perl入学式のテキストを完走した感想

1つ前の記事でも触れていましたが、Perl入学式のテキストやったので雑な感想を…。

namonakimichi.hatenablog.com

きっかけは YAPC::Japan::Online 2022 に参加したことでした。 そこでは普通のWeb開発のセッションや技術選定のセッションを中心に聞いていましたが、Perl自体をそんなに触ったことがなかったので(コードゴルフのコード読んだりしてやべーって言ってた程度)これを機会に一回くらい書いてみようかなと思い、入門してみました。

使った資料

講義資料 - Perl入学式 | Perl Entrance から2021年度以降の資料を見ながら進めました。スライドの利用とGitHubのテキスト本文を両方見るような感じでやってます。 (そして今 practice.md の存在に気が付いた。これはやってないです。練習問題みたい)

サイト自体のトップは Perl入学式 プログラミング初心者のためのPerl入門講座 から。

感想した感想

ざっと覚えている範囲で書きます。

  • シジルっていう独自の変数宣言システムが興味深かった
    • $ ならスカラー変数、 @ 配列、など
    • ぱっと見でどういうものを保持してるのかわかりやすかったと思う
  • 変数宣言が my
    • このスタイルで宣言するの新鮮だった
  • サブルーチンに仮引数を取るみたいな概念がない
    • my $d = shift; とか my ($f, $s) = @_; とかでとる
    • これ明示的じゃなくてこわいって感じ、ひやひやする
  • リファレンス・デリファレンスの概念が難しい
    • 配列を操るための機能
    • これ書きなれないと難しそう、練習問題は雰囲気何回か動かしてみて動かすことには成功した
      • 理解はあいまい
    • シジルで型がある程度わかるのに~とか思ってたけど幻想なのかもと思いつつある
  • 正規表現便利そう
    • というか最近 grep 書いてて GNU 系か、BSD 系か意識するのがめんどくさくなってきた
    • LinuxならPerl入ってるでしょ前提で、Perlで書いてもいいのかもと思った
    • ( ripgrep 使う手もあるが、自分の環境ならまだしも他人の環境に入っているとは限らないので)
  • Web APIデフォルトで入ってるのはいい感じ
    • JSONのパースもあるのはうれしい
    • ただ自分が前回書いた記事の通り、ライブラリのアップデートが必要なケースがある
    • DiscordのWebhookへさっと投げれたので面白かった
  • 日本語の取り扱いが難しい
    • これはまあ… うまく付き合うしかない問題の1つ
    • 後方互換性とか考えてこの作りなんだろうけど、日本語文字列の意識とか長さ見ないといけないとか考えるとめんどくさくなりそう
      • この辺はPython, Rubyの古いバージョンでも昔ひたすらハマってきた問題ではあるので、めんどくさいけどやらなきゃいけないことだと思ってる

総評として今のところ思っているのが Shell の大体として使えそうだなと思いました。 というもの Perl ってLinuxならまずはいっているし、他の人に軽く動かしてもらう分にはちょうどよさそうな言語。 で、人の環境のShellの設定やLinux OSの環境とかにも影響少なさそうだし、いいかなと(後方互換性が強いのが素晴らしい)。

今回学んでみて小さいスクリプトだけど、パワフルな印象を受けました。いつかしれっとどこかで使いたいです。

そのほか

perl-entrance-org/Perl-Entrance-Textbook が2017年の資料らしいけど、他にもやれそうなことが書いてあるので時間があったら読んでみようかなーと思う。

環境構築は asdf で最新版を結局入れてやりました。try/catchとか、数値比較の新しい文法を試して見たかったので。

chrolis/asdf-perl: Perl plugin for asdf version manager

これでさっとやれば入ります。

WEBHOOK取るところは変数にURL直書きしたくなかったので下記のような形にして、実行時に DISCORD_WEBHOOK_URL=うぇぶふっくのURL perl webhook.pl みたいな形で実行してました。

# webhook URLは環境変数からとる
my $webhook_url = $ENV{DISCORD_WEBHOOK_URL};

他に調べるときは metacpan ってサイトが良かったです。 検索性もいいなーと思ったし、めっちゃわかりやすい。英語だけど。

https://metacpan.org/

まとめ

いろいろな意見が散見していますが、実際書いてみて悪くない言語だなと思いました。愛好者がいるのもわかるし、特にCLI環境との相性はよさそうに思います。

一方でモダンな言語と比較すると時代背景的な部分もあり、ちょっととっつきにくいなと思う部分もありました(サブルーチンとか、日本語とか)。IDEのサポートとかでなんとかできる部分もありそうな気がするので、次はそのへんも少し意識出来たらなーと思います(ちなみに IntelliJ IDEA Ultimate で書いてたんですが、直近でコンフィグが壊れていて?起動しなくなってしまって、何とか復旧して書いたみたいな状態だったので、今回そこまで何か準備して意識して、みたいなことができませんでした)

正規表現周りは便利なので、これから活用していきたいです(ライブラリ使うとさらにいい感じにできるとかもあるのかなーと思いつつ、未調査)。