Home > Perl Archive

Perl Archive

use CGIでさくっと定型HTML出力

  • Posted by: master
  • Perl

ヘッダーとかメタタグとか

テスト用に毎回ヘッダーとかメタタグとか記載していくのが難ありなのでuse CGIするほうが早い。

#!/usr/local/bin/perl
use strict;
use warnings;
use CGI;

my $obj = new CGI;
print $obj->header(-charset=>"UTF-8"),$obj->start_html(-encoding=>"UTF-8",-lang=>"ja"), "\n";

my $test = <<"EOF";

デフォルトのテーマや現在表示しているこのテーマでは問題ありませんでしたが、 あるテーマでは極端に表示が遅い事例がありました。

EOF $test =~ s/

|<\/p>//g; print $test,$obj->end_html;

Use of uninitialized value in string eq エラー

  • Posted by: master
  • Perl

初期化されていない変数

Use of uninitialized value in string eq エラーの場合、比較対象のstringが初期化されていないという事になります。

例えばcookie例

my $cookie = $ENV{'HTTP_COOKIE'};
if ($cookie eq '') {
・・・・・
}

上記の場合はUse of uninitialized value in string eq エラーが出ることがあります。

なのでできるだけ下記のように変数を宣言しておくで解決します。

my $cookie = $ENV{'HTTP_COOKIE'} ? $ENV{'HTTP_COOKIE'} : '';

Premature end of script headers エラーでの解決方法

  • Posted by: master
  • Perl

Perlでの問題エラー

Premature end of script headersというApacheのログが出た場合、下記部分を確認。

  • which perl でperlのパスがあってるか確認
  • パーミッションが適正になっているか確認
  • 改行コードがLFになってるか確認
  • content-typeの確認
  • 改行の\nを確認

特に\nのところでこけてることが多かったです。

print "Content-Type: text/html\n";

上記のでは\nが1個ですが連続で2個ないとダメだったりしたり、1個だけでよかったりと。

個人的には\nでのところを見直すのがよいと感じました。

前後の空白スペースをPerlで削除

  • Posted by: master
  • Perl

Perlで簡単に

#!/usr/bin/perl
use strict;
use warnings;

my $test = "  Space  ";
print $test."\n";

&trim($test);

sub trim {
    my $val = shift;
    $val =~ s/^\s*(.*?)\s*$/$1/;
    print $val;
}

そもそもPerlでこれぐらいのものをファイルを作ってやるべきなのかという疑問はありますが、パーツということで備忘録です。今回の例では基本的な事のみしか記載していません。

配列の場合

#!/usr/bin/perl
use strict;
use warnings;

my @week = ('  Sun ', ' Mon', 'Tue ', ' Wed', 'Thu  ', ' Fri', '  Sat');
print "@week\n";

&trim(@week);

sub trim {
    my @list = @_;
    my @new_list = map {$_ =~ s/^\s*(.*?)\s*$/$1/;$_} @list;
    print "@new_list";
}

はまりどころはmap関数で、{}の最後に特殊変数$_を記載しないと1が返ってきます。

Index of all entries

Home > Perl Archive

Search

Feeds

Return to page top