>> So I disagree that those functions have nothing to
>> do with modules.
>Although textbook usage of the BEGIN/END blocks is with modules, there
>is no reason to only use them with modules. Here is an example of the
>END block, no packages, no modules, no symbol table, no blessed objects.
>______________________________________
>use strict;
>use warnings;
>sub createHandle {
> return int(rand(5999))+1;
>}
>sub destroyHandle{
> my $handle = shift;
> die "handle is invalid" if $handle > 6000 || $handle < 0;
> print "handle destroyed\n";
>}
>my $newHandle = createHandle();
>die "time to die";
>END{
> if($newHandle) {destroyHandle($newHandle);}
>}
>________________________________________
>If I want to clean up resources in Perl on a die/croak, and don't want
>to write a class, which is 1-3 (OOP ones) very challanging PODs (for a
>beginner) which a user must read, the simplest thing is to use an END
>block. An END block is much easier for a beginning Perl programmer to
>use than making a package, writing a new sub (includes choosing whether
>to bless a scalar, a hash, or an array, or more!), writing a DESTROY
>sub, switch back to main package, and creating an instance of the class,
>and repeat the previous steps half a dozen times. With END they can use
>die without having to call a C-ish destructor sub before each die
>statement in their code.
Well that may be, but these are *subroutines*. They are not
control statements like if, while, .... Only control stuctures
go in perlsyn.
As I said, there is an argument that they should go in perlsub.
But perlsyn makes no sense.
--tom
Thread Previous
|
Thread Next