Ключевые слова:perl, script, export, (найти похожие документы)
Date: Fri, 31 Aug 2001 03:08:10 +0400
From: Pavel Ammosov <Pavel.Ammosov@f52.n5020.z2.fidonet.org>
Newsgroups: fido7.ru.perl
Subject: Замена стандартных функций Perl самописными
AU>А есть ли возможность написать свою функцию open, котоpая могла бы
AU>быть использована как pодная?
Более-менее.
- --- My.pm ---
package My;
require Exporter;
@My::ISA = qw(Exporter);
@My::EXPORT_OK = qw(&open);
sub open(*;$)
{
no strict 'refs';
local *FILE = $_[0];
local $::file;
if (defined($_[1])) {
$::file = $_[1];
} else {
*FILE = *{$_[0]}{IO};
}
print STDERR "opening $::file\n";
CORE::open(FILE, $::file) || die "cannot open '$::file': $!\n";
}
1;
- --- My.pm ---
и программа к нему:
#!/usr/bin/perl -w
use strict;
use My qw(open);
open(IN, "xxx");
while(<IN>) {
print;
}
close IN;
Осталось только сделать так, чтоб оно работало...
[...]
AU>Получаю pугань о том что IN используется только единожды. Ругань,
AU>естественно, исчезает пpи использовании
AU> mopen(*IN{IO}, "ttt");
AU>Hо хочется, чтобы функция была в указанном смысле pодному open.
AU>Возможно ли это осуществить?
Угу. close IN написать и IN будет использован более одного раза.
--
Pavel Ammosov O \
apavel@aha.ru __ )
http://isabase.philol.msu.ru/~apavel/ )
wget -O - isabase.philol.msu.ru/~apavel/key.asc|pgp -fka O /