[ ホーム | お知らせ | ソフトウェア | 覚え書き | メール | ->英語 ]

Perlの覚え書き

1.記号
2.定数(リテラル)
3.文字列
4.print文
5.真偽値
6.未定義値
7.配列
8.連想配列(ハッシュ)
9.参照(リファレンス)
10.無名の配列と連想配列
11.グロブ
12.組み込み変数
13.標準で使う変数、$_
14.printと組み込み変数
15.ファイルを開く、閉じる
16.ファイルの読み書きモード
17.そのほかのファイルの指定方法
18.ファイルの入力、出力、操作
19.ファイルハンドルを評価する演算子、<>
20.ファイルの入出力の例
21.ファイルテスト演算子
22.算術演算子
23.論理演算子
24.ビット演算子
25.数値比較演算子
26.文字列比較演算子
27.正規表現
28.正規表現で使う記号
29.正規表現などで使う定義済みの変数
30.ファイルのパス名をパスとファイル名、拡張子に分割する例
31.正規表現の演算子
32.s演算子
33.tr演算子
34.そのほかの演算子
35.制御文
36.サブルーチン
37.システム関数
38.現在の時刻を取得する例
39.文字列関数
40.書式文字列で使う記号
41.文字コードを確認する例
42.標準入出力のエンコーディング
43.ファイル入出力のエンコーディング
44.Jcode、文字コードの変換に使うモジュール
45.シフトJISを入力してEUC-JPで出力する例
46.改行コードを確認する例
47.言語設定(locale)
48.バイナリデータの型指定
49.算術関数
[ TOP ]

記号

$変数
@配列
%連想配列
&サブルーチン
*グロブ
[ TOP ]

定数(リテラル)

$x=3; # 整数 $x=3.141592; # 実数 $x=3e2; # 指数表記(3×10の2乗) $x=0x123; # 16進数 $x=0377; # 8進数 $x="ABCabc"; # 文字列
[ TOP ]

文字列

''文字列
""文字列、変数の展開とエスケープあり
.文字列の連結
<<ヒアドキュメント
$a='doremi"; $b="$a${a}\n"; $c=$a.$b; $d=<<"EOM"; a ab EOM
[ TOP ]

print文

print "ABC"; # 画面に"ABC"を表示 print $a; print $a,$b; print $a,$b,"\n"; print $a.$b; print "$a is $b\.\n"; print 123;
[ TOP ]

真偽値

つぎの値を偽とし、それ以外は真 ・数値の0 ・文字列の"0" ・空の文字列("") ・未定義値
[ TOP ]

未定義値

undef $x; # 変数を未定義にする $x=undef # 変数に未定義値を代入する(undef $xとおなじ) # undefは常に戻り値が未定義値になる関数 defined $x # 変数が定義されていれば真を返す
[ TOP ]

配列

@hoge=("Tokyo","Osaka","Nagoya"); print @hoge; # 配列の内容を並べて表示 print $hoge[0]; # 先頭の要素 print $hoge[-1]; # 末尾の要素 $n=@hoge; # 配列hogeをスカラー型として扱う場合、要素数が返る print $n; # したがって、この場合は要素数3が表示される print $#hoge; # 末尾の要素番号、この場合2 unshift( @hoge, "Fukuoka"); # 先頭に要素を追加 $x=shift @hoge; # 先頭から要素を取り出す、@hogeを省略したら@ARGVから取り出し push( @hoge, "Kyoto"); # 末尾に要素を追加 $x=pop @hoge; # 末尾から要素を取り出す @a=reverse @hoge; # 逆順に並び換え @a=sort @hoge; # 要素を整列 @b=sort {$a <=> $b} @hoge; # 要素を整列、数字順 @b=sort {$a cmp $b} @hoge; # 要素を整列、文字列順 @c=split(/\|/,"a|b|c"); # 文字列を分割して配列へ print join( "&", @c); # 要素を結合して文字列に @fugu=( 1..5) # =(1,2,3,4,5)とおなじ splice @fugu, 1, 2; # 要素1から2個の要素を削除 splice @fugu, 2; # 要素2以降の要素を削除 splice @fugu, 1, 0, 9, 8, 7; # 要素1から9,7,7を挿入
[ TOP ]

連想配列(ハッシュ)

%fuga=( 'name'=>'Taro', 'age'=>18); # name=Taro, age=18で連想配列を生成 %fuga=('name','Taro','age',18); # name=Taro, age=18で連想配列を生成 print $fuga{'name'}; # キーがnameの値を参照 print $fuga{'age'}; # キーがageの値を参照 $fuga{'blood'}='AB'; # キーblood、値ABの要素を追加 $fuga{blood}='AB'; # キーblood、値ABの要素を追加 print %fuga; # キーと値を並べて表示 @a=keys %fuga; # キーの配列を参照 @b=values %fuga; # 値の配列を参照 @c=each %fuga; # 一組のキーと値を順番に参照 ($key,$val)=each %fuga; # 一組のキーと値を順番に参照 print exists $fuga{'namae'}; # キーと値があるか確認
[ TOP ]

参照(リファレンス)

$a=\$var # \が参照演算子、変数varの参照値を変数aに格納 $b=\@array; # 配列arrayを参照 $c=\%hash; # 連想配列hashを参照 $d=\&sub; # 関数subを参照 $e=\*glob; # グロブglobを参照 print $$a; # 参照から変数の値を表示 print @$b; # 参照から配列の内容を表示 print $b->[2] # 参照から配列の2番の要素を表示 print %$c; # 参照から連想配列の内容を表示 print $c->{'hoge'} # 参照からキーにhogeをもつ値を表示 print ref $a; # ref演算子、参照先の型を返す、SCALARと表示 print ref $d; # CODEと表示
[ TOP ]

無名の配列と連想配列

$a=[1,2,3,4]; # []は無名の配列への参照 $b={ "Japan"=>"Tokyo", "France"=>"Paris"}; # {}は無名の連想配列への参照
[ TOP ]

グロブ

おなじ識別子のスカラー変数、配列、連想配列、サブルーチンを別名で参照できるようにしたもの $abc="HELO"; @abc=(1,2,3,4); *x=*abc; print $x; print $x[2];
[ TOP ]

組み込み変数

@_サブルーチンの実引数の配列
$_入力、パターンマッチなど標準で使う変数
$.入力レコードの現在の行番号
$/入力レコードを区切る文字列、標準は"\n"
$%出力レコードの現在のページ番号
$=出力レコードの現在の行番号
$-出力レコード、ページ内の残りの行数
$\出力レコードの末尾に追加する文字列、標準は空
$,出力フィールドを区切る文字列、標準は空
$"配列を文字列に展開するとき要素を区切る文字列、標準は空
$#数値を表示するときに使う書式、標準は"%.20g"
$~出力時のフォーマット名、標準はハンドル名とおなじ
$^出力時のヘッダフォーマット名
$?子プロセスの終了コード
$!errnoの値
$0スクリプトのファイル名
@ARGVコマンドライン引数の配列
$ARGV[0]最初のコマンドライン引数
$#ARGVコマンドライン引数の末尾の要素番号
%ENV環境変数の連想配列
%SIGシグナルハンドラの連想配列
STDERRファイルハンドル、標準エラー出力
STDINファイルハンドル、標準入力
STDOUTファイルハンドル、標準出力
__FILE__スクリプトのファイル名
__LINE__スクリプトの行番号
[ TOP ]

標準で使う変数、$_

入力やパターンマッチなど標準で使う変数、変数を省略したときに利用される print # print $_ とおなじ意味 while(<STDIN>) # while($_=<STDIN>) /^abc/ # $_=~/^abcd/ for( 1..10) # for( $_=1; $_ <= 10; i++)
[ TOP ]

printと組み込み変数

print "A"; print "B"; $\="$"; print "C"; $,="/"; print 1,2,3; @x=(4,5,6); $"=":"; print @x; print "A"."B" print "A","B" # ABC$1/2/3$4:5:6$AB$A/B$
[ TOP ]

ファイルを開く、閉じる

ファイルを開く=ファイルハンドルを取得 open FH, "hoge"; # ファイル"hoge"を開いてファイルハンドルFHを取得 open FH, ">>hoge"; # ファイル"hoge"に追加出力 open FH, "|wc"; # 出力をwcコマンドに渡す close FH; # ファイルハンドルFHで指定したファイルを閉じる
[ TOP ]

ファイルの読み書きモード

読み書きモードはopen関数のファイル名の指定で記号を使い指定する
指定読む書く追加新規上書き
filename××××
<filename××××
>filename××
>>filename××
+<filename×××
+>filename×
+>>filename×
[ TOP ]

そのほかのファイルの指定方法

パイプによる入出力などもopen関数のファイル名の指定で記号を使い指定できる
command|commandを実行し、その出力をパイプ経由でファイルハンドルを渡す
|command出力とファイルハンドルをパイプでcommandに渡す
-STDINを開く
>-STDOUTを開く
>&0STDINを開く
>&1STDOUTを開く
>&2STDERRを開く
[ TOP ]

ファイルの入力、出力、操作

$c=getc FH; # 1文字入力して変数cに代入、FHを省略するとSTDINから入力 print FH "ABC"; # ファイルハンドルFHに出力 printf FH "%d", 365; # ファイルハンドルFHに出力 read FH, $d, 20; # 20バイトを入力して変数dに代入 select FH; # ファイルハンドルFHを選択 unlink "filename"; # ファイルの削除 rename "old", "new"; # ファイル名の変更
[ TOP ]

ファイルハンドルを評価する演算子、<>

$a=<FH>; # 1レコード(つぎのレコードの区切り文字まで)を入力して変数aに代入 @b=<FH>; # すべてのレコードを入力して配列bに代入
<>コマンドラインで指定されたファイルを順番に評価、なければ標準入力を評価
$ARGVコマンドラインで指定したファイル名
ARGVコマンドラインで指定されたファイルの現在のファイルハンドル
while(<>) { .... } これはつぎの文とおなじ意味 unshift(@ARGV,'-') if $#ARGV < $[; while( $ARGV = shift @ARGV) { open( ARGV, $ARGV); while( $_=<ARGV> { .... } }
[ TOP ]

ファイルの入出力の例

# openに失敗したらメッセージを表示して強制終了する場合 open(FH,"test")||die "ERROR:$!\m"; # 入力の行区切り文字を変更する $/="\x0d0a"; # CRLF # ファイルを1行ずつ入力する例(1) open(FH,"<filename"); while( $_=<FH>) { print $_; # $_に改行文字も含まれる } close(FH); # ファイルを1行ずつ入力する例(2) open(FH,"<filename"); print while(<FH>); close(FH); # ファイル全体を行単位で入力する例(1) open(FH,"<filename"); @a=<FH>; while( $_=shift @a) { print $_; } close(FH); # ファイル全体を行単位で入力する例(2) open(FH,"<filename"); @a=<FH>; print for(@a); # print foreach(@a)でもよい close(FH); # ファイル全体を入力する例 undef $/; open(FH,"<filename"); $a=<FH>; print $a; close(FH); # ディレクトリを開く例 opendir( DH, "dirname"); # ディレクトリを開く while( $name=readdir( DH) { print "$name\n"; # 指定したディレクトリのファイル名の一覧を表示 } closedir( DH);
[ TOP ]

ファイルテスト演算子

-r読み込み可能
-w書き込み可能
-x実行可能
-eファイルが存在する
-zファイルの大きさがゼロ
-sファイルの大きさ
-fファイルである
-dディレクトリである
-lシンボリックリンクである
-Tテキストファイルである
-Bバイナリファイルである
-Mファイルが修正されてからの日数
-Aファイルが参照されてからの日数
-Cファイルが作成されてからの日数
例) if( -e "test.txt") { print "ファイルがある"; }
[ TOP ]

算術演算子

5 + 2 足し算
5 - 2 引き算
5 * 2 掛け算
5 / 2 割り算
5 % 2 5を2で割った余り(=1)
5 ** 2 5の2乗(=25)
[ TOP ]

論理演算子

$xx && $yy 論理積、左辺が偽なら右辺を評価しない
$xx and $yy &&とおなじ
$xx || $yy 論理和、左辺が真なら右辺を評価しない
$xx or $yy ||とおなじ
! $xx 論理否定
open( FH, "file.txt") || die "Cannot open file: $!\n";
[ TOP ]

ビット演算子

$xx | $yy $xxと$yyのOR
$xx & $yy $xxと$yyのAND
~$xx $xxのビットをすべて反転させたもの
$xx << 2 $xxを2ビット左シフト
$xx >> 2 $xxを2ビット右シフト(上位ビットには符号ビットを埋める)
[ TOP ]

数値比較演算子

$xx == $yy $xxと$yyが等しければtrue
$xx != $yy $xxと$yyが異なっていればtrue
$xx < $yy $xxが$yyより小さければtrue
$xx > $yy $xxが$yyより大きければtrue
$xx <= $yy $xxが$yyより等しいか小さければtrue
$xx >= $yy $xxが$yyより等しいか大きければtrue
($xx==2) && ($yy==3) $xxが2、かつ、$yyが3であればtrue
($xx==2) || ($yy==3) $xxが2、もしくは、$yyが3であればtrue
$xx <=> $yy 比較結果を -1, 0, 1 のいずれかで返す
[ TOP ]

文字列比較演算子

$xx eq $yy $xxと$yyが等しければ
$xx ne $yy $xxと$yyが異なっていれば
$xx lt $yy $xxが$yyより小さければ
$xx gt $yy $xxが$yyより大きければ
$xx le $yy $xxが$yyより等しいか小さければ
$xx ge $yy $xxが$yyより等しいか大きければ
$xx cmp $yy 比較し、-1, 0, 1 のいずれかで返す
[ TOP ]

正規表現

/abc/ 対象(通常は$_)がabcにマッチするか返す
/abc/g 対象がabcにマッチするか何度も繰り返す
/abc/i 対象がabcにマッチするか、大文字と小文字を区別しない
s/abc/XYZ/ 対象がabcにマッチした部分をXYZに置き換える、置き換えた個数を返す
tr/ab/AB/ 対象のaをAにbをBに置き換える、置き換えた文字数を返す
[ TOP ]

正規表現で使う記号

.改行を除く任意の1文字
*直前のパターンに0回以上マッチ
+直前のパターンに1回以上マッチ
?直前のパターンに0回か1回マッチ
^先頭にマッチ
$末尾にマッチ
\メタ文字をエスケープ
(r)パターンをグループ化、パターンrにマッチ
[abc]文字a/b/cのどれか1文字にマッチ
[^abc]文字a/b/c以外のどれか1文字にマッチ
(r1|r2)パターンr1かr2にマッチ
{N,M}直前のパターンにN回以上M回以下マッチ
{N,}直前のパターンにN回以上マッチ
{,M}直前のパターンにM回以下マッチ
[ TOP ]

正規表現などで使う定義済みの変数

$1,$2,$3,... ()対にマッチした部分文字列
$& マッチした部分の文字列
$` マッチした部分より前の文字列
$' マッチした部分より後の文字列
$+ マッチした最後の()対の部分文字列
[ TOP ]

ファイルのパス名をパスとファイル名、拡張子に分割する例

/(.*\/)*([^\.]*)(\..*)/; print " dir:$1\n"; print "name:$2\n"; print " ext:$3\n"; ※ $_=ファイルのパス名とする
[ TOP ]

正規表現の演算子

$xx =~ /正規表現/ 正規表現にマッチすれば
$xx !~ /正規表現/ 正規表現にマッチしなければ
$xx =~ /ABC/ $xxがABCという文字を含んでいれば
$xx !~ /ABC/ $xxがABCという文字を含んでいなければ
$xx =~ s/ABC/DEF/ $xxに含まれるABCをDEFに置換
$xx =~ s/ABC/DEF/g $xxに含まれるすべてのABCをDEFに置換
$xx =~ tr/A-Z/a-z/ $xxの大文字を小文字に変換
$cnt=$xx=~tr/././ $xxに含まれる"."の数を$cntに代入
[ TOP ]

s演算子

s/検索文字列/置換文字列/オプション 検索文字列があれば置換文字列に置き換える 検索文字列が見つかれば真、見つからなければ偽を返す tr演算子と違い、変数は展開する ※ オプション
g置換を繰り返す
i大文字と小文字を区別しないで探す
m文字列を複数行として扱う
sワイドルカードの.を改行にも適用する
e置換文字列を式として評価する(置換文字列をevalで評価する)
ee置換文字列を評価した戻り値を評価する
[ TOP ]

tr演算子

tr/検索文字列/置換文字列/オプション 検索文字列で指定した各文字があれば置換文字列で指定した対応する文字で置き換える 置換文字列が検索文字列より短い場合は置換文字列の最後の文字を使う 戻り値は置換、もしくは削除した文字数 ※ オプション
c検索文字列以外を探す
d対応する置換文字がない場合はその文字を削除する
s置換後、重複している文字は削除してひとつだけ残す
※ tr演算子では変数を展開しないので注意、その場合はevalを使う eval "tr/$search/$replace/,1" or die $@;
[ TOP ]

そのほかの演算子

@xx="ABC"."DEF" 文字列の連結
@xx=(1..3) @xx=(1,2,3)とおなじ
for(0..5) for($_=0;$_<=5;$_++)とおなじ
print '*' x80; '*'を80回表示
$xx = ($yy < 5) ? "小" : "大"; 条件演算子
$xx **= 2; 代入演算子$xx = $xx ** 2; とおなじ
$xx++; $xxの値を+1
$xx--; $xxの値を-1
[ TOP ]

制御文

if( 条件1) { 処理1; # 条件1を満たしたら処理1 } elsif( 条件2) { 処理2; # それ以外で条件2を満たしたら処理2 } else { 処理3; # それ以外なら処理3 } unless( 条件) { 処理1; # 条件を満たさないなら処理1 } else { 処理2; # それ以外なら処理2 } 処理 if( 条件); # 条件を満たしたら処理 処理 unless( 条件); # 条件を満たさないなら処理 while( 条件) { 処理; } 処理 while( 条件); # 条件を満たしている間、処理を繰り返す 処理 until( 条件); # 条件を満たすまで、処理を繰り返す last [ラベル]; # 繰り返しを抜ける、[ラベル]は省略可 next [ラベル]; # つぎの繰り返しへ redo [ラベル]; # もう一度繰り返し、条件はテストしない goto ラベル; # 指定したラベルに飛ぶ exit; # プログラムの終了 ラベル: while/until/for/foreach ... for( $i=1; $i <= 9; $i++) { print $i; } for( 1..9) { print $_; } print $_ for( 1..9); print $_ for( 1, 2, 4, 9); print $_ for( "Tokyo", "Osaka", "Nagoya"); print $_ foreach( "Tokyo", "Osaka", "Nagoya"); print $t foreach $t ( "Tokyo", "Osaka", "Nagoya"); print ($k, $v) while( ( $k, $v) = each ( %hash) );
[ TOP ]

サブルーチン

sub routine { 処理; return 値; // returnを使わなくても最後に評価した値が戻り値となる } &routine; // 引数なしの呼び出し &routine( list); // 引数ありの呼び出し sub func { ($a,$b)=@_; // 第1引数を変数a、第2引数を変数bに代入 $a+$b; // 結果が戻り値、$_[0]+$_[1]でもよい } print &func( 4, 3);
[ TOP ]

システム関数

exit(n)# 終了コードn(省略時は0)で終了
die(s)# エラー出力にs(省略時は"Died")を表示して終了コード$!で終了
exec(cmd)# スクリプトを終了してcmdを実行
system(cmd)# 子プロセスでcmdを実行、戻り値は子プロセスの終了コード
sleep(n)# n秒待つ(省略時は永久に待つ)
time# 現在の時刻を1970/1/1 0:00:00 UTCからの秒数で返す
gmtime(n)# n(省略時はtimeの戻り値)をグリニッジ標準時を表わす配列で返す
localtime(n)# n(省略時はtimeの戻り値)をローカルの時刻を表わす配列で返す
[ TOP ]

現在の時刻を取得する例

($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$summer) = localtime; $year=$year+1900; $mon=$mon+1;
$sec秒(0-59)
$min分(0-59)
$hour時(0-23)
$mday日(1-)
$mon月(0-11)
$year年(1900年が0)
$wday曜日(0が日曜日、1が月曜日、6が土曜日、7が日曜日)
$yday今年の元日から数えた日数
$summerサマータイムなら真
[ TOP ]

文字列関数

length(s) 文字列sのバイト数を返す
index(s1,s2[,pos]) 文字列s1のpos番目からs2を探し、最初に見つかった位置を返す
rindex(s1,s2[,pos]) 文字列s1のpos番目からs2を探し、最後に見つかった位置を返す
substr(s,pos[,n]) 文字列sのpos番目からn文字の部分文字列を返す
chop(s) 末尾の1文字を取り除く、除いた1文字を返す
chomp(s) 末尾の改行文字を取り除く、除いた改行文字を返す
printf(fmt,list) listをfmtで書式化して返す
sprintf(fmt,list) listをfmtで書式化して返す
crypt(s1,s2) s2を鍵としてs1を暗号化して返す
ord(s) 文字列の先頭文字のASCIIコードを返す
hex(s) sを16進数表記の文字列して数値化して返す
oct(s) sを8進数表記の文字列して数値化して返す
vec(s,pos,w) 文字列sをwビット幅の整数配列としてpos番目の要素を返す
pack(tmp,list) テンプレートtmpに従いlistをバイナリデータの構造体にする
unpack(tmp,s) 文字列sをテンプレートtmpに従って展開する
[ TOP ]

書式文字列で使う記号

記号意味
%c文字
%s文字列
%d10進整数
%e浮動小数点数(指数形式)
%f浮動小数点数(固定小数点形式)
%e浮動小数点数(コンパクト形式)
%o8進整数
%x16進整数
%X16進整数(大文字使用)
[ TOP ]

文字コードを確認する例

use 5.6.0; use Jcode; undef $/; while( <>) { ($code,$nmatch)=getcode( $_); printf( "%-11s %s\n", $code, $ARGV); }
[ TOP ]

標準入出力のエンコーディング

encodingプラグマで指定する 書式) use encoding A, STDIN=>B, STDOUT=>C; # Perl 5.8 以降
Aスクリプトのエンコーディング名
B標準入力のエンコーディング名、省略したらAとおなじ
C標準出力のエンコーディング名、省略したらAとおなじ
※ エンコーディング名の例 shiftjis, cp932, MacJapanese, euc-jp, iso-2022-jp, utf8, UTF-16, UTF-32
[ TOP ]

ファイル入出力のエンコーディング

Encodeモジュールのencode/decode関数を使う 例) ファイルからshitjisを読み、shiftjisで出力する例 use encoding 'shiftjis' use Encode 'decode'; open (IN, '<', 'aaa.txt'); while (<IN>) { # 標準出力 <> ではないので注意! $line = decode('shiftjis', $_); # $_はファイルからの入力 # encodingの指定は提供されない print $line; # 標準出力への出力 # encodingの指定が適用される } close (IN); ※ 標準入力とファイル入力 スクリプト名 < 入力ファイル名 # 標準入力を使用、encodingの指定が適用される スクリプト名 入力ファイル名 # <>を使用(ファイルハンドルARGV) # encodingの指定が適用されない
[ TOP ]

Jcode、文字コードの変換に使うモジュール

・getcode ($code, [$nmatch]) = getcode($str) $strで指定した文字列の文字コードを$codeに、文字数を$nmatchに返す ※ 文字コードを表わす値
ascii日本語の文字がない
binaryテキストではない
euc日本語EUC
sjisシフトJIS
jisJIS(ISO-2022-JP)
ucs2生のUnicode(UTF16)
utf8UTF8
・convert Jcode::convert($str, [$ocode, $icode, $opt]) 文字列$strの文字コードを$incodeから$ocodeに変換する $icodeを省略すると、getcodeの結果を使う
[ TOP ]

シフトJISを入力してEUC-JPで出力する例

# jcode.plを使う場合 require "jcode.pl"; while(<>){ jcode::convert(*_, 'euc', 'sjis); print; } # Jcode.pmを使う場合 use Jcode; while(<>){ Jcode::convert($_, 'euc', 'sjis'); # または、Jcode->new($_, 'sjis')->euc; print; } # Perl 5.8を使う場合 use Encode; while(<>){ from_to($_, 'shiftjis', 'euc-jp'); print; }
[ TOP ]

改行コードを確認する例

undef $/; $cr="\x0d"; $lf="\x0a"; $crlf=$cr.$lf; $find="$crlf|$cr|$lf"; %type=( $crlf, "win(CRLF)", $cr, "mac(CR)", $lf, "unix(LF)"); while(<>) { if( $_ =~ /$find/) { $found=$&; $desc=&findToEnd; } else { $desc="none"; } printf( "%-11s %s\n", $desc, $ARGV); } sub findToEnd { while( $' =~ /$find/) { if( $& ne $found) { return "unmatch"; } } return $type{$found}; }
[ TOP ]

言語設定(locale)

標準ではlocaleを無視、現在のlocaleを有効にするにはlocaleプラグマを使う 書式) use locale; localeを有効にすると... ・比較演算子、比較関数はLC_COLLATEを反映する ・正規表現と大小文字変換関数はLC_CTYPEを反映する ・printfなど書式関数はLC_NUMERICを反映する ・POSIXの日付書式関数はLC_TIMEを反映する 例) use POSIX 'locale_h'; print setlocale(LC_CTYPE); # localeの値を取り出す setlocale( LC_CTYPE, "ja_JP.SJIS"); # localeに値を設定する
[ TOP ]

バイナリデータの型指定

a / A ASCII文字列(ヌル文字を詰める/空白を詰める)
c / C char / unsigned char
s / S short / unsigned short
i / I int / unsigned int
l / L long / unsigned long
n / N ビッグエンディアンのshort/long
v / V リトルエンディアンのshort/long
h / H 16進文字列(下位ニブルが先/上位ニブルが先)
b / B ビット列(昇順/降順)
x / X ヌル文字 / 1バイト戻る
f / d 浮動小数点数(float/double)
@ 絶対位置までヌル文字で埋める
u uuencodeした文字列
p 文字列のポインタ
数字 直前の型指定を指定した回数繰り返し
* 直前の型指定を残りのすべての要素について繰り返し
[ TOP ]

算術関数

sin/cos/tan/atan2三角関数、ラジアンで指定
exp(n)eのn乗
log(v)eを底とするvの対数
sqrt(v)vの平方根
int小数点以下切り捨て
rand(n)0からnまでの乱数、nの標準値は1
srand乱数の系列を初期化
[ TOP ]


[ ホーム | お知らせ | ソフトウェア | 覚え書き | メール | ->英語 ]

空色そふと

eXTReMe Tracker