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.txt".
$

今度はオープンに成功したので、INをcloseしているはず。

Sample/perl/close/close/src/close at master · bg1bgst333/Sample · GitHub

eq演算子

文字列が同じかどうかは、eq演算子を使った方がいい。

Perlの比較演算子 - Perl入門ゼミ

実行すると、

$ vi eq_operator.pl
$ perl eq_operator.pl
$s1 ne $s2
$s1 eq $s3
$

1つ目は、"=="なら数値に変換するが、"eq"は文字列として評価し、不一致を出した。
2つ目は、一致を出した。

Sample/perl/eq_operator/eq_operator/src/eq_operator at master · bg1bgst333/Sample · GitHub

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

"=="演算子(等価演算子)は、数値が等しいかどうかを評価する。

Perl - - perldoc.jp

実行すると、

$ vi equality_operator.pl
$ perl equality_operator.pl
$x == $y
$s1 == $s2
$str1 == $str2
$

等価演算子も文字列を数値に変換できる場合、変換して数値として評価するので、文字列の一致という目的では使用しないこと。
2つ目、3つ目は、文字列としては一致しないはずなので、数値として変換して評価した結果なのだろう。

Sample/perl/equality_operator/equality_operator/src/equality_operator at master · bg1bgst333/Sample · GitHub

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

Perlでは文字列の連結に'.'(ドット)を使う。

文字列の連結 - 文字列と数値 - Perl入門

これを実行すると、

$ vi dot_operator.pl
$ perl dot_operator.pl
ABCDEF
AAABBB
123CCC
1234
$

数値と文字列を'.'演算子で連結する場合、数値は文字列に変換されて連結される。
数値と数値でも'.'演算子を使っていれば、数値は文字列に変換されて連結される。

Sample/perl/dot_operator/dot_operator/src/dot_operator at master · bg1bgst333/Sample · GitHub

+演算子

'+'記号の演算子というと、一般的には加算、そして文字列の連結などに使われる。

Perlの演算子 - Perl入門ゼミ

Perlの場合、'+'演算子は加算に使う。
文字列の連結をしようとしても、エラーにはならないが、正しく機能しない。

実行すると、

$ vi plus_operator.pl
$ perl plus_operator.pl
30
30
3
$

文字列の場合、数値が先頭にあれば、その部分だけ数値に変換して、数値として加算演算をする。
なので文字列連結は行われない。

Sample/perl/plus_operator/plus_operator/src/plus_operator at master · bg1bgst333/Sample · GitHub

シングルクォート

シングルクォートで囲んだ文字列はそのまま表示され、変数やエスケープシーケンスなども展開しない。

文字列

これを実行すると、

$ vi single_quote.pl
$ perl single_quote.pl
XXX ABC YYY
AAA $str BBB\n$

このように出力される。
2つ目は変数もエスケープシーケンスも展開されないで出力されてしまっている。
むしろこうしたい場合にはこれでいいのだが。

Sample/perl/single_quote/single_quote/src/single_quote at master · bg1bgst333/Sample · GitHub