Google
    
<< TOPページ 掲示板TOP 記事データ お知らせメール ▼レス(1) >>

Perl : 同じファイルハンドルを複数のサブルーチンで扱う

 ( メビウスリング日記 )
- アクセス(318) - いいね!(0)

あうら☆マスター ★管理者

ファイルを開く時、変数にファイルハンドルを関連付けることができます。

my を宣言した場合、同じサブルーチンの中でファイルハンドルを扱わなければならない…と思い込んでいたのですが、
他のサブルーチンに渡しても上手く処理できるみたいですね。


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
スクリプト
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

use strict;

# サブルーチンにファイルハンドルを開かせます (A)
my $FILE_OUT = open_file_for_print();

# (A) で開いたファイルハンドルをさらにサブルーチン渡して、ファイルを書き込みます (B)
print_file($FILE_OUT);

# ファイルハンドルを閉じます
close($FILE_OUT) && print "close file ok.";

# 出力時と同じ要領で、今度はファイルを読み込んで表示します
my $FILE_OPEN = open_file_for_read();
open_file_and_view($FILE_OPEN);
close($FILE_OPEN);


#-----------------------------------------------------------
# ファイルを開いてファイルハンドルと関連付ける (A)
#-----------------------------------------------------------

sub open_file_for_print{

my($FILE1);

my $success = open($FILE1,">","out.log");

if($success){ print "open file ok.\n" }

$FILE1;

}

#-----------------------------------------------------------
# ファイルハンドルを渡して書き込む (B)
#-----------------------------------------------------------
sub print_file{

my($FILE1) = @_;

my $success = print $FILE1 "TEXT\nTEXT\nTEXT";

if($success){ print "print file ok.\n" }

}



#-----------------------------------------------------------
# ファイルを開いてファイルハンドルと関連付ける
#-----------------------------------------------------------

sub open_file_for_read{

my($FILE1);

open($FILE1,"<","out.log");

$FILE1;

}
#-----------------------------------------------------------
# ファイルを開いてファイルハンドルと関連付ける
#-----------------------------------------------------------

sub open_file_and_view{

my($FILE1) = @_;

print "\n\nFile Body is ... \n\n";

while(<$FILE1>){
print $_;
}


}

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
実行結果
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

open file ok.
print file ok.
close file ok.

File Body is ...

TEXT
TEXT
TEXT

6年前 No.0
ページ: 1


 
 

モクちゃん@aotomizu ★AU=TFfSDwKh1C

お疲れ様です!
サブルーチンが何かわからなくてすみません><(黙っ

6年前 No.1
ページ: 1

 
 
<< TOPページ 掲示板TOP 記事データ お知らせメール ▲ページ上 >>
★必ず ローカルルールメビウスリングのルール をご覧ください。
 ▼スタンプ▲スタンプ
※スタンプはいちどに 3個 まで使えます  ×閉じる