Perl

@ARGV

コマンドライン引数は、@ARGVで配列として取得できる。コマンドライン引数の取得 - 標準入力とコマンドライン引数 - Perl入門配列なので、要素数も取得できるし、添字でアクセスもできる。 $ vi ARGV.pl $ perl ARGV.pl $size = 0 $ perl ARGV.pl ABC $size …

foreach

Perlにもforeachがある。foreach文 - 繰り返し処理 - Perl入門繰り返し@arrayから要素を取り出して、$varに格納し、それを出力している。 $ vi foreach.pl $ perl foreach.pl $var = 100 $var = 200 $var = 300 $このように出力される。Sample/perl/foreach/…

配列のサイズ

代入演算子を挟んで、左辺に変数、右辺に配列を置いた場合、変数に配列のサイズ(要素数)が格納される。配列の要素数を取得する - Perl入門ゼミ 配列の要素数 - リストと配列 - Perl入門サイズの出力、for文のループをサイズ分までしている。 $ vi array.pl $…

リスト

複数の値をまとめて操作する時、リストを使う。リストとは - リストと配列 - Perl入門 リストと配列の使い方リストは、複数の変数やリテラルなどをカンマで区切って、括弧で全体を括っている。 変数や配列のようなオブジェクトではなく、表現という形に近い…

パターンマッチ演算子

特定の文字列変数が、正規表現のパターンにマッチするかどうかをチェックする時には、パターンマッチ演算子を使う。perlreref - Perl の正規表現のリファレンス - perldoc.jp Perlの正規表現をマスターしよう - Perl入門ゼミ 「=~」 - パターンマッチ演算子 …

正規表現

Perlの特徴的な機能の一つに正規表現がある。perlreref - Perl の正規表現のリファレンス - perldoc.jp Perlの正規表現をマスターしよう - Perl入門ゼミ簡単に言うと、特定パターンの文字列を探すための機能。<IN>で入力された行が、A[bB]C("AbC"または"ABC")か</in>…

特殊変数

Perlには、特別な意味を持つグローバル変数「特殊変数」がたくさん用意されている。perlvar - Perl で定義済みの変数 - perldoc.jp Perlの特殊変数 - Perl入門ゼミwhileの条件式に<IN>だけ書いている。 渡す相手がいないわけだが、実際には読み込んだ行文字列は</in>…

die

dieは、関数にエラーが発生した時、エラーメッセージを出してプログラムを終了する。die関数 - プログラム制御に関する関数 - Perl関数のリファレンスopenに失敗した時、dieに渡したらどうなるか。 $ vi die.pl $ ls die.pl $ perl die.pl open error!! at d…

シンボル

これまで出てきたファイルハンドルと言われるSTDINとかINとかOUTとか呼ばれるものは、実際にはファイルハンドルの一種でシンボルというものらしい。 (他にもいろいろあるが、ファイルハンドルについてはいずれ扱う。)ファイルハンドルの概念を理解する - Per…

行入力演算子

ファイルハンドルを"<"と">"で囲むと、そのファイルの1行分の文字列を取得できる。 これを行入力演算子という。行入力演算子「<>」 - ファイルから一行読み込む - Perl入門ゼミファイルを開いたら、こんな感じで最初の行を$lineに格納できる。 $ vi line_inp…

close

指定のファイルハンドルを閉じるにはcloseを使う。Perlの組み込み関数 close の翻訳 - perldoc.jp今度は"test.txt"を用意して、ファイルを開いて閉じる。 $ vi close.pl $ ls close.pl test.txt $ cat test.txt ABCDE $ perl close.pl open success "test.tx…

open

ファイルを開くには、openを使う。Perlの組み込み関数 open の翻訳 - perldoc.jp今回、"test.txt"を置かずに実行すると、 $ ls open.pl $ vi open.pl $ perl open.pl $ret is false $openの戻り値がfalse、つまりオープンに失敗したことがわかる。Sample/per…

eq演算子

文字列が同じかどうかは、eq演算子を使った方がいい。Perlの比較演算子 - Perl入門ゼミ実行すると、 $ vi eq_operator.pl $ perl eq_operator.pl $s1 ne $s2 $s1 eq $s3 $1つ目は、"=="なら数値に変換するが、"eq"は文字列として評価し、不一致を出した。 2…

==演算子(等価演算子)

"=="演算子(等価演算子)は、数値が等しいかどうかを評価する。Perl - - perldoc.jp実行すると、 $ vi equality_operator.pl $ perl equality_operator.pl $x == $y $s1 == $s2 $str1 == $str2 $等価演算子も文字列を数値に変換できる場合、変換して数値とし…

.演算子(ドット演算子)

Perlでは文字列の連結に'.'(ドット)を使う。文字列の連結 - 文字列と数値 - Perl入門これを実行すると、 $ vi dot_operator.pl $ perl dot_operator.pl ABCDEF AAABBB 123CCC 1234 $数値と文字列を'.'演算子で連結する場合、数値は文字列に変換されて連結さ…

+演算子

'+'記号の演算子というと、一般的には加算、そして文字列の連結などに使われる。Perlの演算子 - Perl入門ゼミPerlの場合、'+'演算子は加算に使う。 文字列の連結をしようとしても、エラーにはならないが、正しく機能しない。実行すると、 $ vi plus_operator…

シングルクォート

シングルクォートで囲んだ文字列はそのまま表示され、変数やエスケープシーケンスなども展開しない。文字列これを実行すると、 $ vi single_quote.pl $ perl single_quote.pl XXX ABC YYY AAA $str BBB\n$このように出力される。 2つ目は変数もエスケープシ…

ダブルクォート

Perlで文字列を表現する方法は、ダブルクォート("")とシングルクォート('')の2種類がある。文字列ダブルクォート("")の特徴としては、中に変数を入れても、その変数の中身を展開してくれるという点である。とすると、 $ vi double_quote.pl $ perl double_qu…

chomp

前回やったように、 #!/usr/bin/perl $str = <STDIN>; # 標準入力から読み込んだ文字列を$strに格納. print "[$str]"; # "[$str]"をprintで出力. STDINで入力した文字列を出力してみると、 $ perl chomp.pl ABCDE [ABCDE ]$改行が入ってしまっている。 末尾の改行を</stdin>…

STDIN

Perlにおいて"STDIN"は、標準入力ハンドルを表す。標準入力からの値の取得 - 標準入力とコマンドライン引数 - Perl入門これを、 <STDIN> とすることで入力を受け取れる。入力した文字列を出力する。 $ vi STDIN.pl $ perl STDIN.pl ABCDE"ABCDE"を入力してリターン</stdin>…

コメント

Perlのコメントは、頭に'#'を付ける。perlintro - Perl の概要 - perldoc.jp # comment print "ABC\n"; #Print "ABC" string and LineFeed. #comment out #print "DEF\n"; #Do not execute. と書いたなら、 $ vi comment.pl $ perl comment.pl ABC $ABCは出…

配列

Perlで配列を扱う。perldata - Perl のデータ型 - perldoc.jp とほほのperl入門(概要編)変数と同様に各要素に値を入れる。printで、添字が1の要素だけ出力する。ちなみに、Perlではダブルクォート("")の中でも変数を展開できるので、このように出力するこ…

変数

Perlには変数の型の宣言が必要ないので、そのまま最初から変数に値を代入することができる・・・。perldata - Perl のデータ型 - perldoc.jp変数に値を入れて出力してみる・・・。 $ vi variable.plとし、Perlの変数は頭に$を付ける・・・。 スカラー変数と…

print

突然ですが、スクリプト系言語をやることに・・・。 まず、Perlから・・・。Perlの組み込み関数 print の翻訳 - perldoc.jp文字列を出力をするにはprintを使う・・・。 $ vi print.plとviで開いて、1行目の"#!"のあとにperlコマンドのパスを付けるとperlスク…