Perl: 2020年2月アーカイブ

もう10年近く前に作ったシステムの移行をしているのだけど、その中に UDP パケットでデータを受け取っているプログラムがある。firewall の設定をしたり、ちょっとだけ新サーバに合わせてそのプログラムの受信部分を修正したので、疎通確認だけでもしときたいなっと。Perl で簡単なプログラムでも作ろうと思ったんだけど、念の為にググってみると、ちゃんとそういうプログラムが公開されているね。


もう、そこに載ってるソースそのまま(スコープがグローバルしかないので、変数宣言の my だけ外すという繊細さを見せてるが(笑)>俺)にコピー。

#!/usr/bin/perl

use Socket;

$ipstr = $ARGV[0];
$port = $ARGV[1];
$msg = $ARGV[2];

$ipaddr = inet_aton($ipstr);
$sockaddr = pack_sockaddr_in($port, $ipaddr);
socket(SOCKET, PF_INET, SOCK_DGRAM, 0);
send(SOCKET,$msg , 0, $sockaddr);

無事、テスト終了。

最近 Perl もあまり触ってないので、これだけのコード書くにも色々調べないと駄目だったと思うので、大変助かりました。ありがとうございます>ProjectLiliO
もう 8年前に作った Perl で書いたシステムを CentOS 9 サーバに移行する。

DBD/DBI を始め、色々と Perl モジュールをインストールしないといけないのだが、まあ、ほとんど yum で入れられるので大した手間ではない。

んが、日本語のコード変換に使用している、

Jcode;
MIME::Words

にはいつも苦労させられる。標準の yum リポジトリに含まれていないからだ。
(Jcode なんか、中で Encode 呼んでるだけなんだから入れなくてもいいやろみたいな素人意見は却下。use Jcode している全ソースを修正する暇も金もない。けっこう巨大なシステムなのである。個人が趣味で作っているシステムとは規模が違うのだよ)

CPAN からなら入れられるが依存関係を潰しながら入れるの大変なので、いつもは yum に RepoForge(旧RPMForge)リポジトリを追加してインストールする。んが、なんと 2016年で RepoForge リポジトリの提供は終わったそうな・・・
「え?この間、サーバ移行したときに使ったけど?」と思ったが、その作業をしたのは 2015年だった(^^;

というわけで、EPEL(Extra Package for Enterprise Linux)リポジトリを使って今回は入れてみる。EPEL は Fedora コミュニティの有志によって作成されたものだ。ありがたや、ありがたや。

・EPELリポジトリの追加

# yum -y install epel-release

・Jcode のインストール

# yum --enablerepo=epel -y install perl-Jcode

・MIME-Words のインストール

EPELリポジトリにも perl-MIME-Words のようなパッケージはない。でも、そう言えば CPAN でインストールするときは install MIME::Words ってやってたけど、MIME-tools-5.XXX.tar.gz とかが読み込まれていたな・・・と。

# yum --enablerepo=epel -y install perl-MIME-tools

ちゃんとインストールされたか確認してみる。

インストール前は use しようとすると、

# perl
use MIME::Words qw (:all);
Can't locate MIME/Words.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at - line 1.
BEGIN failed--compilation aborted at - line 1.

のように「そんなモジュールは見つからない」と怒られていたが、

# perl
use Jcode;

# perl
use MIME::Words qw (:all);

どちらもエラーは出なくなった。ええがな、ええがな。

ちなみに、そのまま EPEL リポジトリを有効にしていると、標準リポジトリと競合して問題が発生することがあるので、また必要なときまで無効にしておく。

・EPELリポジトリの無効化

以前は直接設定ファイルを触っていたけど、便利なコマンドがあったのね。

# yum-config-manager --disable epel

もし yum-config-manager が入っていなかったら、yum -y install yum-utils で入れる。

このアーカイブについて

このページには、2020年2月以降に書かれたブログ記事のうちPerlカテゴリに属しているものが含まれています。

前のアーカイブはPerl: 2018年1月です。

次のアーカイブはPerl: 2020年5月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。


月別 アーカイブ

電気ウナギ的○○ mobile ver.

携帯版「電気ウナギ的○○」はこちら