ファイル操作
☆ファイル操作を行う前の注意
ファイルはあらかじめカレントディレクトリに用意しておく。そうでない場合は扱う対象となるファイルのあるディレクトリ(絶対パス)を指定する必要がある。なお,カレントディレクトリは(インストール時に特に指定しなかった場合は)"C://Perl"となっているはずである。
カレントディレクトリとは現在ユーザが作業しているフォルダのことで,コマンドプロント上でcdと打ち込めば表示させることができる。
1.ファイルを読み込んで表示する
$pathname="data.txt";
open MYFILE, "$pathname";
print <MYFILE>;
close MYFILE;
⇒$pathname="D://data.txt"; Dドライブにある場合
⇒$pathname="./function/data.txt"; カレントディレクトリより下層のフォルダにある場合
*今回の例ではファイル名をスカラー変数へ代入しているがopen関数から直接
open MYFILE, "data.txt"
としてもよい。
2.読み込んだデータを配列へ格納する
$pathname="myfile.dat";
open MYFILE, "$pathname";
@list=<MYFILE>;
print @list;
close MYFILE;
*Perlはファイルに保存されているデータを1行ずつ読み込みます。
例えば下のようなデータファイルであった場合には@list[0]には1,2というデータ,@list[1]には3,4というデータが格納されます。
---ここから---
1,2
3,4
---ここまで---
このようにカンマなどで区切られたデータを扱う場合はsplit関数を用いて,
@dat1=split(/,/,$list[0]);
@dat2=split(/,/,$list[1]);
などとすれば@dat1[0]に1,@dat1[1]に2,@dat2[0]に3,@dat2[1]に4,といったように格納されます。
check!!
1行ずつ別の配列にデータを格納する方法 @dat1=(1,2) @dat2=(3,4)
$pathname="D://datafile.dat"; open MYFILE, "$pathname"; while (<MYFILE>) { chomp; @{"dat$."} = split /,/; } print @dat1; print @dat2; close MYFILE;
2次配列の形でデータを格納する方法 @dat=([1,2],[3,4])
$pathname="D://datafile.dat"; open MYFILE, "$pathname"; @dat = map {chomp;[split /,/]} <MYFILE>; print $dat[0][0]; close MYFILE;