Program/Perl
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
#amazon(4797336803)
#amazon(4873115671)
#contents
#br
#adsense(728x90)
#br
* 制御構文 (Control Statement) [#o819cad7]
** 条件分岐 (Conditional Statement) [#k8badf4d]
*** if [#ac8970f8]
#pre(soft){{
if ('''expr1'''){
'''command1'''
} elsif ('''expr2'''){
'''command2'''
} else {
'''command3'''
}
}}
** 繰り返し (Loop Statement) [#tf34ec1b]
*** for [#jee1e245]
- 変数が条件を満たすまで処理を繰り返す
#pre(soft){{
for ( '''init; expr; in/decrement''' ) {
'''command'''
}
}}
- 処理を10回繰り返す
#pre(soft){{
for ( i=0 ; i < 10 ; i++ ) {
'''command'''
}
}}
-- 変数 i が 10 未満の場合に処理を行う
*** foreach [#sefee1ad]
- 変数に配列の値を順次代入する
#pre(soft){{
foreach $'''var''' (@'''array''') {
'''command'''
}
}}
-- $'''var'''
--- 配列の値が代入される変数
--- 省略した場合、$_ に代入される
*** while [#r223b962]
#pre(soft){{
while ('''expr'''){
'''command'''
}
}}
** 中断 [#vb1862b2]
** 終了 [#jc35e33e]
* 条件式 (Expression) [#sb1e3739]
** 文字、数値の条件式 [#d320d8d7]
** 論理結合 [#x8a469ed]
* 変数 (Variable) [#z0b95752]
- 変数の宣言
-- 「この変数を使いますよ」と明示すること
-- Perl の場合、変数名、データ型、スコープを明示する
-- グローバル スコープに限っては、宣言を省略することが出...
-- ただし、use strict を指定する場合は必ず宣言する必要が...
** データ型 (Data Types) [#ma14a0bd]
*** スカラー変数 (Scalar Variable) [#x90ebf91]
- 単一の文字列や数字を代入することが出来る
- 変数名は $'''var''' 形式
- $ の次の一文字は必ずアルファベット
- 記号は _ (Under score) のみ使用出来る
- 大文字と小文字は区別される
----
- 変数の定義
#pre(soft){{
$'''var''' = '''value''';
$'''var''' = "'''value'''";
}}
-- 文字列の場合、" (Double quote) か ' (Single quote) で...
- 変数の使用
#pre(soft){{
print $'''var''';
print ${'''var'''};
}}
-- { } (Braces) で括ることで変数名の範囲を指定することが...
----
- ex) 変数の使用
#pre(soft){{
host# cat sample.pl
#!/usr/bin/perl
$num = 10;
print "value is $num";
host# ./sample.pl
value is 10
}}
- ex) 変数の後に文字が続く場合は { } で括る
#pre(soft){{
host# cat sample.pl
#!/usr/bin/perl
our $num = 10;
print "value is ${num}cm";
host# ./sample.pl
value is 10cm
}}
- ex) ' (Single quote) で括ると変数が展開されない
#pre(soft){{
host# cat sample.pl
#!/usr/bin/perl
our $num = 10;
print 'value is $num';
host# ./sample.pl
value is $num
}}
*** 配列 (Array Variable) [#o2865ab6]
- 複数の文字列や数字を代入することが出来る
- 変数名は @'''var''' 形式
- @ の次の一文字は必ずアルファベット
- 記号は _ (Under score) のみ使用出来る
- 大文字と小文字は区別される
----
- 変数への代入 (単一)
#pre(soft){{
$'''var'''['''num'''] = '''value''';
}}
- 変数への代入 (複数)
#pre(soft){{
@'''var''' = ('''value1''', ['''value2'''...]);
@'''var''' = ("'''value1'''", ["'''value2'''"...]);
@'''var'''['''num1''', ['''num2'''...]] = ("'''value1'''"...
}}
-- 文字列の場合、" (Double quote) か ' (Single quote) で...
-- 単一の要素を示すため、@ ではなく $ になる点に注意
-- '''num'''
--- 代入する配列の位置 (0~)
- 配列の末尾に追加
#pre(soft){{
@'''var''' = (@'''var''' , '''value''');
}}
- 要素の個数をスカラー変数に代入する
#pre(soft){{
$'''var2''' = @'''var''';
}}
- 変数の使用
#pre(soft){{
print "@'''var'''";
print "$'''var'''['''num''']";
}}
-- 単一の要素を示すため、@ ではなく $ になる点に注意
- 最後の要素
#pre(soft){{
print "$'''var'''[$#'''var''']\n";
}}
----
- ex)
#pre(soft){{
host# cat sample.pl
#!/usr/bin/perl
use strict;
my @array;
my $num;
@array = ("AAA", "BBB", "CCC");
$num = @array;
print "@array\n"; &color(Red){すべて出力};
print "@array[1]\n"; &color(Red){特定の値を出力};
print "$num\n"; &color(Red){値の数を出力};
foreach (@array) { &color(Red){繰り返し処理ですべて出力};
print "$_\n";
}
host# ./sample.pl
AAA BBB CCC
BBB
3
AAA
BBB
CCC
}}
*** ハッシュ変数 (Hash Variable) [#q3dadfc3]
- キーと値をペアとして代入した配列
- 配列と違い、要素の順序は意識しない
- 変数名は %'''var''' 形式
- % の次の一文字は必ずアルファベット
- 記号は _ (Under score) のみ使用出来る
- 大文字と小文字は区別される
----
- 変数への代入 (複数)
#pre(soft){{
%'''var''' = ('''key1''' => '''value1''', ['''key2''' => ...
%'''var''' = ('''key1''' => "'''value1'''", ['''key2''' =...
}}
-- 要素が文字列の場合、" (Double quote) か ' (Single quot...
-- キー名が英数字と _ (Under score) のみならクォートで括...
- 変数への代入 (単一)
#pre(soft){{
$'''var'''{'''key'''} = '''value''';
}}
- 配列の個数をスカラー変数に代入する
#pre(soft){{
$'''var2''' = %'''var1''';
}}
- 変数の使用
#pre(soft){{
print $'''var'''{'''key'''};
}}
*** 多次元配列 (Multidimensional Array Variable) [#i14fe8...
- 変数への代入 (複数)
#pre(soft){{
@'''array''' = (
['A1', 'B1'[, 'C1'...]],
['A2', 'B2'[, 'C2'...]],
['A3', 'B3'[, 'C3'...]],
...
);
}}
- 変数の使用
#pre(soft){{
print "$'''array'''['''1num''']['''2num''']\n";
}}
----
- ex)
#pre(soft){{
host# cat sample.pl
#!/usr/bin/perl
use strict;
my @array = "";
@array = (
['A1', 'B1', 'C1'],
['A2', 'B2', 'C2'],
['A3', 'B3', 'C3'],
);
print "$array[0][0] $array[0][1] $array[0][2]\n";
print "$array[1][0] $array[1][1] $array[1][2]\n";
print "$array[2][0] $array[2][1] $array[2][2]\n";
foreach my $i (@array) { &color(Red){繰り返し処理で出力};
foreach my $j (@{$i}) {
print "$j\n";
}
}
host# ./sample.pl
A1 B1 C1
A2 B2 C2
A3 B3 C3
A1
B1
C1
A2
B2
C2
A3
B3
C3
}}
*** 多次元ハッシュ変数 (Multidimensional Hash Variable) [...
- 変数への代入 (複数)
#pre(soft){{
%'''hash''' = (
Raw1 => { ColA => "A1", ColB => "B1", ColC => "C1...
Raw2 => { ColA => "A2", ColB => "B2", ColC => "C2...
Raw3 => { ColA => "A3", ColB => "B3", ColC => "C3...
);
}}
- 変数の使用
----
- ex)
** スコープ [#f34dfba8]
*** グローバル変数 [#n4905eed]
- スクリプト全体で使用可能な変数
- use strict を指定しない場合、宣言をしていない変数はグロ...
- use strict を指定する場合、必ず our で宣言する必要がある
----
- 変数の宣言と定義 (同時)
#pre(soft){{
our $'''var''' = '''value''';
}}
- 変数の宣言と定義 (分割)
#pre(soft){{
our $'''var''';
$'''var''' = '''value''';
}}
*** ローカル変数 [#he6a0265]
- 特定の部分に限定して使用可能な変数
- 局所化することが出来るため、同じ変数名を別の役割で使う...
- my 変数
-- 宣言したスコープからのみ参照可能 (レキシカル スコープ)
-- スコープ内のサブルーチンからも参照出来ない
- local 変数
-- グローバル変数を、宣言したスコープ内で一時的に書き換え...
-- 宣言したスコープが終了すると元の値に戻る
-- 宣言したスコープのサブルーチンからは参照可能
----
- my 変数の宣言と定義
#pre(soft){{
my $'''var''' = '''value''';
}}
- local 変数の宣言と定義
#pre(soft){{
local $'''var''' = '''value''';
}}
** 特殊変数 [#n617f5e5]
|変数|説明|h
|$_|デフォルト変数&br;foreach の変数など、その構文内でデ...
|@_|サブルーチンの引数|
* 関数 (Function) [#g47ae77b]
- 組み込み関数
----
#ls2(Program/Perl/Function)
* サブルーチン (Subroutine) [#oab9470b]
- ユーザが定義する関数を Perl ではサブルーチンという
** 定義 [#e0dd412b]
#pre(soft){{
sub '''subroutine''' {
'''command''';
}
}}
** 呼び出し [#mf87206c]
- サブルーチンを呼び出す
#pre(soft){{
&'''subroutine''';
}}
- 引数を付けて呼び出す
#pre(soft){{
&'''subroutine'''('''arg''');
}}
** ライブラリ [#hc06aed3]
- 汎用的なサブルーチンをメイン スクリプトと独立したファイ...
- サブルーチンが記述されたファイルをライブラリと呼ぶ
----
- ライブラリの読み込み
#pre(soft){{
require '''file''';
}}
* モジュール (Module) [#v6f94981]
- 外部モジュールの読み込み
#pre(soft){{
use '''module''';
}}
----
#ls2(Program/Perl/Module)
* コマンド [#u81bdd5a]
*** print [#ze12eb75]
- 標準出力に出力する
#pre(soft){{
print "'''text'''"
}}
-- Python では " (Double quote) と ' (Single quote) は同じ
-- 行末には改行が入る
- , (Comma) は改行しない
#pre(soft){{
print "'''text1'''", "'''text2'''"
↓
'''text1 text2'''
print "'''text1'''",
print "'''text2'''"
↓
'''text1 text2'''
}}
- 連結する
#pre(soft){{
print "'''text1'''" + "'''text2'''"
↓
'''text1text2'''
}}
- 繰り返し
#pre(soft){{
print "'''text'''" * '''num'''
}}
-- '''text''' を '''num''' 繰り返し出力
* 実行オプション [#n7610d6a]
** スクリプト ファイルの実行 [#q0092c52]
#pre(soft){{
# perl ['''option'''] ['''script.pl''']
}}
|オプション|意味|説明|h
|-e '''command'''||ワンライナー|
|-p||コマンドを繰り返し実行し、結果を標準出力に出力する|
|-n||コマンドを繰り返し実行する|
|-i '''filename'''||入力ファイルに上書き|
|-i'''exp filename'''||入力ファイルに '''exp''' を付与し...
** ワン ライナー [#i39f95a0]
*** ファイルをバックアップした上で置換 [#d4ec73aa]
#pre(soft){{
# perl -i.`date '+%Y%m%d'` -pe 's/foo/bar/g' *
}}
* その他 [#h057bbe1]
*** ファイルを開く [#r9fce194]
open (STR,"list.txt")
close STR;
*** 置換 [#dc9a9b69]
$string =~ s/\n//;
#br
#adsense(728x90)
#br
終了行:
#amazon(4797336803)
#amazon(4873115671)
#contents
#br
#adsense(728x90)
#br
* 制御構文 (Control Statement) [#o819cad7]
** 条件分岐 (Conditional Statement) [#k8badf4d]
*** if [#ac8970f8]
#pre(soft){{
if ('''expr1'''){
'''command1'''
} elsif ('''expr2'''){
'''command2'''
} else {
'''command3'''
}
}}
** 繰り返し (Loop Statement) [#tf34ec1b]
*** for [#jee1e245]
- 変数が条件を満たすまで処理を繰り返す
#pre(soft){{
for ( '''init; expr; in/decrement''' ) {
'''command'''
}
}}
- 処理を10回繰り返す
#pre(soft){{
for ( i=0 ; i < 10 ; i++ ) {
'''command'''
}
}}
-- 変数 i が 10 未満の場合に処理を行う
*** foreach [#sefee1ad]
- 変数に配列の値を順次代入する
#pre(soft){{
foreach $'''var''' (@'''array''') {
'''command'''
}
}}
-- $'''var'''
--- 配列の値が代入される変数
--- 省略した場合、$_ に代入される
*** while [#r223b962]
#pre(soft){{
while ('''expr'''){
'''command'''
}
}}
** 中断 [#vb1862b2]
** 終了 [#jc35e33e]
* 条件式 (Expression) [#sb1e3739]
** 文字、数値の条件式 [#d320d8d7]
** 論理結合 [#x8a469ed]
* 変数 (Variable) [#z0b95752]
- 変数の宣言
-- 「この変数を使いますよ」と明示すること
-- Perl の場合、変数名、データ型、スコープを明示する
-- グローバル スコープに限っては、宣言を省略することが出...
-- ただし、use strict を指定する場合は必ず宣言する必要が...
** データ型 (Data Types) [#ma14a0bd]
*** スカラー変数 (Scalar Variable) [#x90ebf91]
- 単一の文字列や数字を代入することが出来る
- 変数名は $'''var''' 形式
- $ の次の一文字は必ずアルファベット
- 記号は _ (Under score) のみ使用出来る
- 大文字と小文字は区別される
----
- 変数の定義
#pre(soft){{
$'''var''' = '''value''';
$'''var''' = "'''value'''";
}}
-- 文字列の場合、" (Double quote) か ' (Single quote) で...
- 変数の使用
#pre(soft){{
print $'''var''';
print ${'''var'''};
}}
-- { } (Braces) で括ることで変数名の範囲を指定することが...
----
- ex) 変数の使用
#pre(soft){{
host# cat sample.pl
#!/usr/bin/perl
$num = 10;
print "value is $num";
host# ./sample.pl
value is 10
}}
- ex) 変数の後に文字が続く場合は { } で括る
#pre(soft){{
host# cat sample.pl
#!/usr/bin/perl
our $num = 10;
print "value is ${num}cm";
host# ./sample.pl
value is 10cm
}}
- ex) ' (Single quote) で括ると変数が展開されない
#pre(soft){{
host# cat sample.pl
#!/usr/bin/perl
our $num = 10;
print 'value is $num';
host# ./sample.pl
value is $num
}}
*** 配列 (Array Variable) [#o2865ab6]
- 複数の文字列や数字を代入することが出来る
- 変数名は @'''var''' 形式
- @ の次の一文字は必ずアルファベット
- 記号は _ (Under score) のみ使用出来る
- 大文字と小文字は区別される
----
- 変数への代入 (単一)
#pre(soft){{
$'''var'''['''num'''] = '''value''';
}}
- 変数への代入 (複数)
#pre(soft){{
@'''var''' = ('''value1''', ['''value2'''...]);
@'''var''' = ("'''value1'''", ["'''value2'''"...]);
@'''var'''['''num1''', ['''num2'''...]] = ("'''value1'''"...
}}
-- 文字列の場合、" (Double quote) か ' (Single quote) で...
-- 単一の要素を示すため、@ ではなく $ になる点に注意
-- '''num'''
--- 代入する配列の位置 (0~)
- 配列の末尾に追加
#pre(soft){{
@'''var''' = (@'''var''' , '''value''');
}}
- 要素の個数をスカラー変数に代入する
#pre(soft){{
$'''var2''' = @'''var''';
}}
- 変数の使用
#pre(soft){{
print "@'''var'''";
print "$'''var'''['''num''']";
}}
-- 単一の要素を示すため、@ ではなく $ になる点に注意
- 最後の要素
#pre(soft){{
print "$'''var'''[$#'''var''']\n";
}}
----
- ex)
#pre(soft){{
host# cat sample.pl
#!/usr/bin/perl
use strict;
my @array;
my $num;
@array = ("AAA", "BBB", "CCC");
$num = @array;
print "@array\n"; &color(Red){すべて出力};
print "@array[1]\n"; &color(Red){特定の値を出力};
print "$num\n"; &color(Red){値の数を出力};
foreach (@array) { &color(Red){繰り返し処理ですべて出力};
print "$_\n";
}
host# ./sample.pl
AAA BBB CCC
BBB
3
AAA
BBB
CCC
}}
*** ハッシュ変数 (Hash Variable) [#q3dadfc3]
- キーと値をペアとして代入した配列
- 配列と違い、要素の順序は意識しない
- 変数名は %'''var''' 形式
- % の次の一文字は必ずアルファベット
- 記号は _ (Under score) のみ使用出来る
- 大文字と小文字は区別される
----
- 変数への代入 (複数)
#pre(soft){{
%'''var''' = ('''key1''' => '''value1''', ['''key2''' => ...
%'''var''' = ('''key1''' => "'''value1'''", ['''key2''' =...
}}
-- 要素が文字列の場合、" (Double quote) か ' (Single quot...
-- キー名が英数字と _ (Under score) のみならクォートで括...
- 変数への代入 (単一)
#pre(soft){{
$'''var'''{'''key'''} = '''value''';
}}
- 配列の個数をスカラー変数に代入する
#pre(soft){{
$'''var2''' = %'''var1''';
}}
- 変数の使用
#pre(soft){{
print $'''var'''{'''key'''};
}}
*** 多次元配列 (Multidimensional Array Variable) [#i14fe8...
- 変数への代入 (複数)
#pre(soft){{
@'''array''' = (
['A1', 'B1'[, 'C1'...]],
['A2', 'B2'[, 'C2'...]],
['A3', 'B3'[, 'C3'...]],
...
);
}}
- 変数の使用
#pre(soft){{
print "$'''array'''['''1num''']['''2num''']\n";
}}
----
- ex)
#pre(soft){{
host# cat sample.pl
#!/usr/bin/perl
use strict;
my @array = "";
@array = (
['A1', 'B1', 'C1'],
['A2', 'B2', 'C2'],
['A3', 'B3', 'C3'],
);
print "$array[0][0] $array[0][1] $array[0][2]\n";
print "$array[1][0] $array[1][1] $array[1][2]\n";
print "$array[2][0] $array[2][1] $array[2][2]\n";
foreach my $i (@array) { &color(Red){繰り返し処理で出力};
foreach my $j (@{$i}) {
print "$j\n";
}
}
host# ./sample.pl
A1 B1 C1
A2 B2 C2
A3 B3 C3
A1
B1
C1
A2
B2
C2
A3
B3
C3
}}
*** 多次元ハッシュ変数 (Multidimensional Hash Variable) [...
- 変数への代入 (複数)
#pre(soft){{
%'''hash''' = (
Raw1 => { ColA => "A1", ColB => "B1", ColC => "C1...
Raw2 => { ColA => "A2", ColB => "B2", ColC => "C2...
Raw3 => { ColA => "A3", ColB => "B3", ColC => "C3...
);
}}
- 変数の使用
----
- ex)
** スコープ [#f34dfba8]
*** グローバル変数 [#n4905eed]
- スクリプト全体で使用可能な変数
- use strict を指定しない場合、宣言をしていない変数はグロ...
- use strict を指定する場合、必ず our で宣言する必要がある
----
- 変数の宣言と定義 (同時)
#pre(soft){{
our $'''var''' = '''value''';
}}
- 変数の宣言と定義 (分割)
#pre(soft){{
our $'''var''';
$'''var''' = '''value''';
}}
*** ローカル変数 [#he6a0265]
- 特定の部分に限定して使用可能な変数
- 局所化することが出来るため、同じ変数名を別の役割で使う...
- my 変数
-- 宣言したスコープからのみ参照可能 (レキシカル スコープ)
-- スコープ内のサブルーチンからも参照出来ない
- local 変数
-- グローバル変数を、宣言したスコープ内で一時的に書き換え...
-- 宣言したスコープが終了すると元の値に戻る
-- 宣言したスコープのサブルーチンからは参照可能
----
- my 変数の宣言と定義
#pre(soft){{
my $'''var''' = '''value''';
}}
- local 変数の宣言と定義
#pre(soft){{
local $'''var''' = '''value''';
}}
** 特殊変数 [#n617f5e5]
|変数|説明|h
|$_|デフォルト変数&br;foreach の変数など、その構文内でデ...
|@_|サブルーチンの引数|
* 関数 (Function) [#g47ae77b]
- 組み込み関数
----
#ls2(Program/Perl/Function)
* サブルーチン (Subroutine) [#oab9470b]
- ユーザが定義する関数を Perl ではサブルーチンという
** 定義 [#e0dd412b]
#pre(soft){{
sub '''subroutine''' {
'''command''';
}
}}
** 呼び出し [#mf87206c]
- サブルーチンを呼び出す
#pre(soft){{
&'''subroutine''';
}}
- 引数を付けて呼び出す
#pre(soft){{
&'''subroutine'''('''arg''');
}}
** ライブラリ [#hc06aed3]
- 汎用的なサブルーチンをメイン スクリプトと独立したファイ...
- サブルーチンが記述されたファイルをライブラリと呼ぶ
----
- ライブラリの読み込み
#pre(soft){{
require '''file''';
}}
* モジュール (Module) [#v6f94981]
- 外部モジュールの読み込み
#pre(soft){{
use '''module''';
}}
----
#ls2(Program/Perl/Module)
* コマンド [#u81bdd5a]
*** print [#ze12eb75]
- 標準出力に出力する
#pre(soft){{
print "'''text'''"
}}
-- Python では " (Double quote) と ' (Single quote) は同じ
-- 行末には改行が入る
- , (Comma) は改行しない
#pre(soft){{
print "'''text1'''", "'''text2'''"
↓
'''text1 text2'''
print "'''text1'''",
print "'''text2'''"
↓
'''text1 text2'''
}}
- 連結する
#pre(soft){{
print "'''text1'''" + "'''text2'''"
↓
'''text1text2'''
}}
- 繰り返し
#pre(soft){{
print "'''text'''" * '''num'''
}}
-- '''text''' を '''num''' 繰り返し出力
* 実行オプション [#n7610d6a]
** スクリプト ファイルの実行 [#q0092c52]
#pre(soft){{
# perl ['''option'''] ['''script.pl''']
}}
|オプション|意味|説明|h
|-e '''command'''||ワンライナー|
|-p||コマンドを繰り返し実行し、結果を標準出力に出力する|
|-n||コマンドを繰り返し実行する|
|-i '''filename'''||入力ファイルに上書き|
|-i'''exp filename'''||入力ファイルに '''exp''' を付与し...
** ワン ライナー [#i39f95a0]
*** ファイルをバックアップした上で置換 [#d4ec73aa]
#pre(soft){{
# perl -i.`date '+%Y%m%d'` -pe 's/foo/bar/g' *
}}
* その他 [#h057bbe1]
*** ファイルを開く [#r9fce194]
open (STR,"list.txt")
close STR;
*** 置換 [#dc9a9b69]
$string =~ s/\n//;
#br
#adsense(728x90)
#br
ページ名: