e日記風 独り言

#気まぐれ & 気まま & 天邪鬼な老いぼれ技術屋の日々の記録のうち、主に Perl・CGI・HTMLなど Web技術に関連した記事です。
右端上端の同一カテゴリージャンプボタンで同じカテゴリーの他の記事を順番にご覧いただけます。
Access Counter:  総アクセス数
-2144- perlメモ - その2
= 今日は画像なし m(_ _)m =
この下の方のコメント機能のプログラムで一つ分かったら次にまた問題が!・・・と言う具合でまだまだ悪戦苦闘中だが、少ないながらも得られた知識をメモとして。
Localサーバーと Webのレンタルサーバーの間を行ったり来たりしながらプログラムの検討をしていると、途中何がなんだか分からなくなることがある。ローカルと Webでは同じ perlで大まかなコマンドの処理は同じでも 例えば perlのバージョンや使用可能なモジュールが異なるため、細かなところでコマンドの動作が異なっていることが多々ある。
今回、2点ほど気づいたのでメモ。
1つ目は、私の環境は Localサーバー(xampp/Apache)は perl 5.30に対して、Webサーバー(Lolipop)は 5.10で、どうやら ver.5.26以降はライブラリの指定の仕方が異なっているようだ。例えば Webサーバーでは同一ディレクトリに置いたサブルーチン用のファイル(xxxx.pm)に対して use xxxx; とやるだけで認識するのに Local(5.30) の方では予め use lib qw(./); などと指定しないとと言うような情報があったが、何故か私の環境では use lib './xxxx'; などと相対的なパスを指定しないと認識してくれないみたいだ。
2つ目は文字コードの問題で、通常 use uft8; として 内部処理文字コードを UTF-8で宣言した場合、my $str = "あいうえお漢字"; などとコード中で変数に日本語文字を使った場合、その文字コードには utf-8フラグが付加されるので そのまま from_to($str, 'utf-8', 'iso-2022-jp'); などのエンコード処理をしようとすると "Wide character" エラーが出て怒られる。対応策は ver. 5.30 では処理のブロック内で no utf8; 宣言して回避するが、どうやら perl 5.10 では no utf8; が効かないようで Localで問題ないコードでも Webで実行すると "Wide character" エラーが出る。仕方ないので内部の日本語文字を含むメールを送信する場合などは$string = Encode::encode_utf8($str); などとして utf-8フラグを削除してから from_to()コマンドを使うしかなさそうだ。
2020/09/04
このページ(pdiary_2144.html)にコメント/質問をどうぞ
タイトル(30文字以内)
コメント
お名前(ID:10文字以内)
URL(HP or ブログをお持ちの方)
パスワード*
タイトル・コメント・ID は必須です
このページ(pdiary_2144.html)への今までのコメント/質問
このページにはまだ表示できる投稿がありません。

Back to Page top