<<目次へ


ファイル操作


☆ファイル操作を行う前の注意

 ファイルはあらかじめカレントディレクトリに用意しておく。そうでない場合は扱う対象となるファイルのあるディレクトリ(絶対パス)を指定する必要がある。なお,カレントディレクトリは(インストール時に特に指定しなかった場合は)"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;