在Perl中可以用open或者sysopen函數(shù)來打開文件進(jìn)行操作,這兩個(gè)函數(shù)都需要通過一個(gè)文件句柄(即文件指針)來對(duì)文件進(jìn)行讀寫定位等操作。 下面以open函數(shù)為例: 1:讀:open(文件句柄,"<文件名")/open(文件句柄,"文件名"),前提文件必須已經(jīng)存在,否則會(huì)返回0,出錯(cuò)信息在$!中。 2:寫:open(文件句柄,">文件名"),文件如果不存在,那么創(chuàng)建之,如果存在,內(nèi)容被清空,長(zhǎng)度截為0,$!中有出錯(cuò)信息。 3:追加:open(文件句柄,">>文件名"),基本同寫,但有一點(diǎn),文件中的內(nèi)容不會(huì)被清空,新的內(nèi)容會(huì)追加到原文后面。 4:讀寫:open(文件句柄,"+<文件名"),通過“+<”模式,你可以既可以讀文件,又可以寫文件。你可以通過tell() 函數(shù)在文件內(nèi)部移動(dòng),通過seek()函數(shù)進(jìn)行定位。如果文件不存在,就會(huì)被創(chuàng)建。如果文件已經(jīng)存在,原來的數(shù)據(jù)不會(huì)被清除。 open(文件句柄,"+>文件名"),通過“+》”模式,可以同時(shí)讀寫文件,但與上面不同的是,它是破懷性寫,會(huì)清除原來的內(nèi)容
“` #!/usr/bin/env perl
$full_list = “/root/workspace/kaldi/kaldi-5.0/egs/yesno/s5/data/local/waves_all.list”; $test_list = “/root/workspace/kaldi/kaldi-5.0/egs/yesno/s5/data/local/waves.test”; $train_list = “/root/workspace/kaldi/kaldi-5.0/egs/yesno/s5/data/local/waves.train”;
open FL, $full_list; $nol = 0; #PRint < FL>; while ($l = < FL>)#讀取文件 { $nol++; print $nol,”,”,$l,”/n”; } close FL;
$i = 0; open FL, $full_list; open TESTLIST, “>$test_list”; open TRAINLIST, “>$train_list”; while ($l = < FL>) { chomp($l); $i++; if ($i <= $nol/2 ) { print TRAINLIST “$l/n”; } else { print TESTLIST “$l/n”; } } “`
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注