#!/usr/bin/perl
# コメントは#以降
print "Hello world!!\n"; # "で囲んだ文字列は変数や\nが評価される
print 'Hello world!!\n'; # 'で囲むとそのまま表示される

#変数宣言
$str = 'hello';			# 変数は$から始まる
print '$str = ' . $str . "\n";	# .で文字列を連結する

#置換
$str =~ s/hello/HELLO/g;	# s/hoge/HOGE/g が一般的な置換構文
print '$str = ' . $str . "\n";

# 関数の呼び出しは&関数名(パラメータ...)
#ファイル読み込み
&fprint("hello.pl");

#ファイル読み込み＆置換
# ファイルをオープンINはファイルハンドラ
open(IN, "hello.pl");
print "### hello.pl 置換表示\n";
# whileで全行ループ 変数名を省略すると&_が使用される
while (<IN>) { $_ =~ s/Hello/HELLO/g; print; }
# ハンドラのクローズ
close(IN);

#ファイル書き込み
&fwrite("out.txt1");

#書き込みファイル表示
&fprint("out.txt1");

&fadd("out.txt2");
&fprint("out.txt2");

# 関数はsub 関数名 {...}
#ファイル書き込み
sub fwrite {
	# 書き込み用にファイルオープン
	# > ファイル名
	# $_[0]で第一パラメータを取得する
	open(OUT, "> $_[0]");
	# OUTハンドラに文字列書き込み
	print(OUT "こんにちわ\n");
	# ハンドラのクローズ
	close(OUT);
}

#ファイル追加書き込み
sub fadd {
	# >> ファイル名で追加書き込みオープン
	open(OUT, ">> $_[0]");
	print(OUT "こんにちわ\n");
	close(OUT);
}

#ファイル表示
sub fprint {
	open(IN, $_[0]);
	print "### $_[0]表示\n";
	while (<IN>) { print; }
	close(IN);
}


