Perlの最近のブログ記事

Perlの配列操作における基本をメモ

# 配列初期化
@list = ();
@list = ("あ","い","う","え","お");

# 配列アクセス
$list[0]; # あ
$list[1]; # い

# 配列の長さ
$#list+1; # 5
$listLength = @list; # 5

# ふぉーいーち(foreach)
foreach my $val (@list){
    print "$val\n<br />";
}

# ふぉーぶん(for)
for( $i=0 ; $i <= $#list ; $i++ ){
    print $list[$i], "\n";
}

# 配列が空かどうか調べる
if ( $#list < 0 ){
    die("配列空");
}

# 配列を出力
print @list;
 # あいうえお

# 区切り文字を追加 or 変更して出力
$" = ',';
print @list;
 # あ,い,う,え,お

# 配列に追加
push(@list, $hoge); # 最後に追加
unshift(@list, $hoge); # 先頭に追加

# 配列から削除
pop(@list); # 最後の要素を削除
shift(@list); # 先頭の要素を削除

# 配列の途中を削除 or 追加などの操作
splice( @list, n番目から, m個を削除して, ["か", "き", "く"]を追加 );
splice( @list, -n(後ろからn)番目から, m個を削除して, ["か", "き", "く"]を追加 );

# 連想配列の初期化とか
%hash = ();

# 連想配列の取り出し
while ( ( $key, $value ) = each( %hash ) ) {
    if($value ne ""){
        print "$key : $value\n<br />";
    }
}

連想配列の操作はどうするんだろう。配列を使って、オブジェクト指向的に無理やり作ればいいのかね。

Perlがsuexecで動くサーバだと偶にあることのようです。
原因は解らないらしい。

flat memo(http://logic.stepserver.jp/memo.cgi/archive/542/)には

1. cgiスクリプトをバイナリモードでアップロードする。

と書いてありますが、

交差点の真ん中で(http://sagittarius.dip.jp/toshi/premature.php)には

1、ファイル転送モードが間違っている
 Binaryモードで転送すると動かないのでASCIIモードで転送してください。

と書いてあります。はたしてどちらが正しいのか。
上記2サイトに掲載されている解決方法をまとめると。

  • ファイルのアップロード方法(バイナリモードかアスキーモードか)
  • 改行コードを確認しLFにする。
  • スクリプトの最後に1;↓↓(改行×2)を付け足す。
  • perlの一行目を「#!/usr/bin/perl -」とする。
  • perlのパスが間違っているかどうか確認する。
  • 文字コード変換が上手くいっていないかもしれないので、サーバがLinux系ならばECUにする。

事で解決できるようです。
他にも、ディレクトリのパーミッションやcgiのパーミッションがおかしいというのもあるようです。

Movabletypeで良く500エラーが出てる人は試してみるのも有かもしれません。

参考
  • flat memo(http://logic.stepserver.jp/memo.cgi/archive/542/)
  • 交差点の真ん中で(http://sagittarius.dip.jp/toshi/premature.php)
090307-stackasta.jpg スタック アスタリスク*:添付ファイル付きメールを送信する

$from = "mats\@hogehoge.hoge";
$to = "mats\@hogehoge.hoge";
$subject = "件名";
$body = "ここは、メールの本文になります。";
$attach_data = &myCreateTextFunction;
$filename = "filename.txt";
仕事で入り用になったのでメモ。


$iaddr = inet_aton($host)

Perlでホスト名($host)をIPアドレスに変換

*ホスト名が存在しない場合は、変換されない。

 

$port = getservbyname('http', 'tcp');

httpで使用するポート番号でTCPプロトコルを使う。

*$portには80が入る

このアーカイブについて

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

前のカテゴリはMovable Typeです。

次のカテゴリはPHPです。

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