perl 에서 핸들러전달
글쓴이: mr.lee / 작성시간: 수, 2005/08/17 - 2:21오후
펄에서 파일핸들러나 STDOUT등을 전달, 저장, 불러와서 사용등이 가능한지요? 이를테면 아래와 같은 개념으로 사용을 할려고 합니다. (물론, 아래 코드는 에러납니다)
{
package Test;
sub new
{
my $class = shift;
my $self = {};
$self->{target} = undef;
bless($self, $class);
return $self;
}
sub prn
{
my $self = shift;
if ($#_ == 2) {
$self->{target} = shift;
} else {
$self->{target} = STDOUT;
}
$self->output(shift);
}
sub output
{
my $self = shift;
my $content = shift;
print($self->{target} <<END_TAG);
starting print.
$content
end print.
END_TAG
}
}
$test = Test->new();
$test->prn("This is standard output test\n");
local *FILEHANDLE;
open(FILEHANDLE, ">", "prn.txt");
$test->prn(FILEHANDLE, "This is file handle test\n");
close(FILEHANDLE);
Forums:


자답이네요...[code:1]{ package Te
자답이네요...
{ package Test; sub new { my $class = shift; my $self = {}; $self->{target} = undef; bless($self, $class); return $self; } sub prn { my $self = shift; if ($#_ == 2) { $self->{target} = shift; } else { $self->{target} = *STDOUT; // use the typeglob notation } $self->output(shift); } sub output { my $self = shift; my $content = shift; my $target = $self->{target}; // 변수로 한번 받아서.. print($target <<END_TAG); starting print. $content end print. END_TAG } } $test = Test->new(); $test->prn("This is standard output test\n"); local *FILEHANDLE; open(FILEHANDLE, ">", "prn.txt"); $test->prn(*FILEHANDLE, "This is file handle test\n"); // use the typeglob notation close(FILEHANDLE);댓글 달기