Posted at
PerlDay 21

今年Perlで困ったこと

More than 1 year has passed since last update.


はじめに

この記事はPerl Advent Calendar 2017の21日目の記事です。昨日、20日は@cat2kobanさんによる「Shell Scriptで書かれた作業時間管理ツールをPerlに書き直す (序章)」でした。

言語を変えての再実装は新しい言語を勉強する際によくやりますが、どういった実装にするのかを考えたり

言語による違いがこうなるのかと腑に落ちて面白いですよね。


今年はまったこと

1,CGI::Prettyを使ってテーブルを組んでたら無限ループ

2,PerlでAES暗号化したものが別な言語で復元できない

3,CPANからインストールできないモジュールがある


1,CGI::Prettyを使ってテーブルを組んでたら無限ループ


条件

データ件数が少ないときはなんでもない。

データ件数が増えると無限ループに陥って返ってこなくなる。


原因

古いCGI::Prettyの内部で再帰呼び出しがあり件数が増えると無限ループしてメモリ肥大化していっていた。


解決方法

1,最新版に更新する → 但し、既に削除予定モジュールになっているので使うべきではない。。。

2,自前でテーブルタグを組む処理を実装する


2,PerlでAES暗号化したものが別な言語で復元できない


原因


参考

Javaで暗号化したデータをPerlで復号化しようとしたら大変だった件

http://d.hatena.ne.jp/download_takeshi/20100819/1282173492


原因

CPANモジュールの標準外実装だった。

やっぱり、やっつけで作る前に暗号化系はパラメータ等をちゃんと検討した方がよかった。。。


3,CPANからインストールできないモジュールがある


条件

Makefile.PLで自身がいるディレクトリ以下のモジュールを使おうとしているモジュール。

やってるときにひっかかったのは


  • Crypt-DH-GMP-0.00012


原因

Perl5.26にするとカレントディレクトリが探索パスにならなくなるので自身以下のパスを読んでくれない。


対策

アーカイブをおとしてきてMakefile.PLの修正を行うしかない。


参考

第46回 Perl 5.26で変わること(1)

http://gihyo.jp/dev/serial/01/perl-hackers-hub/004601


最後に

色々とはまることがあったけどPerlたのしー!