I tried to find out on Net and found out there are modules present public, private, but if I want to implement without using those modules, how can I implement this feature?
Why don't you look inside those modules to see how they work?
This is not a very easy problem to solve in perl.
Here's one possible approach (though not foolproof):
use strict;
package BOB;
use Carp;
use base 'IO::File';
use overload();
sub _pRiVaTish {
my $self = shift;
my ($package, $filename, $line) = caller;
carp "YOU MUST NOT CALL THIS METHOD YOU, YOU AIN'T BOB!!!"
unless $filename eq __FILE__
and
0 == index overload::StrVal($self), __PACKAGE__,0;
return 'beep';
}
package BIB;
use vars '@ISA';
@ISA='BOB';
1;
package main;
my $bib = BIB->new();
$bib->_pRiVaTish();
__END__
YOU MUST NOT CALL THIS METHOD YOU, YOU AIN'T BOB!!! at private.methods
+.pl line 28
And just in case(:
MJD says "you can't just make shit up and expect the computer to know what you mean, retardo!" |
I run a Win32 PPM repository for perl 5.6.x and 5.8.x -- I take requests (README). |
** The third rule of perl club is a statement of fact: pod is sexy. |