select undef, undef, undef, 0.5; # 0.5sec の sleep
my %aaa = ( 'ip' => '192.168.0.1',
'host' => 'foo' );
$aaa{'ip'}
for ($i = 0; $i <= $#A_ARRAY; $i++) {
my %aaa = ( 'ip' => "192.168.0.$i", 'host' => "host_$i" ); # <--- ループ内で my で宣言するのがミソ
$aaa{'ip'} = $new_ip;
# $HOSTS[$#HOSTS+1] = \%aaa;
push (@HOSTS, \%aaa);
}foreach $h (@HOSTS) {
print "ip: $h->{'ip'}\n";
}foreach $x (@XXX) {
my (%host) = ('IP' => "0.0.0.0", 'host' => "host_$x" );
# $HOSTS[$#HOSTS+1] = \%host;
push (@HOSTS, \%host);
}
のようにして作ったhash配列 @HOSTS に対して、その$i番目の中身を更新するには
(1) :
$HOSTS[$i]->{'IP'} = "192.168.0.1" # これでは更新出来ない。
(2) :
my (%h) = $HOSTS[$i];
$h{'IP'} = "192.168.0.1";
$HOSTS[$i] = \%h # これでなら更新出来る。%aaa = ( 'val1' => 10, 'val2' => 100 ); %bbb = %aaa;
$num = @array; # 配列 @array の要素数が $num に入る
$#array # 配列 @array の最後のindex番号を表す。
@dest = sort { $a cmp $b } @src; # 順方向
@dest = sort { $b cmp $a } @src; # 逆方向@dest = sort { $a <=> $b } @src; # 順方向
@dest = sort { $b <=> $a } @src; # 逆方向@dest = sort { $a->{'VarName'} <=> $b->{'VarName'} } @src; # 順方向push (@dst, $add) @dst: 挿入先配列, $add: 挿入する値
$deleted = pop (@src) @src: 取り出し元配列。実行後は $deletedが取り除かれた配列になっている $deleted: @srcの最後から取り出した要素
unshift (@src, $add) @dst: 挿入先配列, $add: 挿入する値
$deleted = shift (@src) @src: 取り出し元配列。実行後は $deletedが取り除かれた配列になっている $deleted: @srcの先頭から取り出した要素
※arrayの要素がhashであっても大丈夫。
use Time::Local; # timelocal() my($sec,$min,$hour,$mday,$mon,$year); # 普通は localtime(time) の返り値を代入するが、ここは例示なので具体的な日付けで ($year,$mon,$mday,$hour,$min,$sec) = (2009,01,01,12,00,23); #2009年1月1日12時0分23秒 # perlの常識ながら、$monは0オリジン、$yearは1900オリジンなので、人間が使う値が入っている場合には、当然引き算が必要 my ($time_local) = timelocal ($sec,$min,$hour,$day,$mon-1,$year-1900); # 上で得られた $time_local は、基準日時(1970年01月01日で0時0分0秒)からの秒数になっている。 # であるから、ここから更に「10日と2時間」を秒数に換算したものを加えると、 $time_local += (10 * 24 * 60 * 60) + (2 * 60 * 60); # 以下で得られる $res_* に入る値が、求める日時である。 my ($res_sec,$res_min,$res_hour,$res_mday,$res_mon,$res_year,$res_wday,$res_yday,$res_isdst) = localtime($time_local);
$ret = system ("呼び出すコマンド");
$ret = $ret >> 8;;
if (!open (PROG, "| 呼び出すコマンド")) {
print "open error\n";
}
print PROG "送りたいデータ";
・・・・
close (PROG); # 最後の後始末
use File::Copy;
copy("コピー元のファイル名", "コピー先のファイル名"); # ファイルのcopy
move("移動元", "移動先"); # ファイルのrenamemy ($dir) = './data';
if (!opendir (DIR, "$dir")) {
die "Could not open dir: $dir\n";
}
my (@read_tmp);
while (defined($ent = readdir(DIR))) {
if (($ent =~ /^\.$/) || ($ent =~ /^\.\.$/)) { next; }
# $read_tmp[$#read_tmp+1] = $ent;
# $read_tmp[$#read_tmp+1] = "$dir/$ent";
push (@read_tmp, "$dir/$ent");
}
closedir(DIR);
# 思った通りの並びで読み取ってくるわけではないので、sort しておいた方がいい場合もある。
my (file_entries) = sort { $a cmp $b } @read_tmp;| 演算子 | 説明 |
|---|---|
| -r | 読み込み可能 |
| -w | 書き込み可能 |
| -x | 実行可能で |
| -o | 実行者とファイルの所有者が同一 |
| -R | 実uid/gidで読み込み可能 |
| -W | 実uid/gidで書き込み可能 |
| -X | 実uid/gidで実行可能 |
| -O | 実uidとファイルの所有者が同一 |
| -e | ファイルが存在する |
| -z | ファイルサイズが 0 |
| -s | ファイルサイズが 0 以外(大きさを返す) |
| -f | ファイルは通常ファイル |
| -d | ファイルはディレクトリ |
| -l | ファイルはシンボリックリンク |
| -p | ファイルは名前付きパイプ |
| -S | ファイルはソケット |
| -b | ファイルはブロック型の特殊ファイル |
| -c | ファイルはキャラクタ型の特殊ファイル |
| -t | ファイルハンドルが tty としてオープンされている |
| -u | ファイルの setuid ビットがセットされている |
| -g | ファイルの setgif ビットがセットされている |
| -k | ファイルの sticky ビットがセットされている |
| -T | ファイルがテキストファイル |
| -B | ファイルがバイナリファイル |
| -M | perl起動時における、ファイルの更新時刻からの日数 |
| -A | perl起動時における、ファイルの参照時刻からの日数 |
| -C | perl起動時における、ファイルの作成時刻からの日数 |
if (-e $file_name) {
# ファイルが存在した場合の処理を記述
}use utf8; use Encode;
binmode(STDIN,":utf8"); binmode(STDOUT,":utf8");
print "Hello World.\n"; # これより右側はコメント
=pod ここは、コメントになる =cut print "Hello World.\n";