/usr/share/perl5/IO/All/Link.pm is in libio-all-perl 0.54-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 | package IO::All::Link;
use strict;
use warnings;
use IO::All::File -base;
const type => 'link';
sub link {
my $self = shift;
bless $self, __PACKAGE__;
$self->name(shift) if @_;
$self->_init;
}
sub readlink {
my $self = shift;
$self->constructor->(CORE::readlink($self->name));
}
sub symlink {
my $self = shift;
my $target = shift;
$self->assert_filepath if $self->_assert;
CORE::symlink($target, $self->pathname);
}
sub AUTOLOAD {
my $self = shift;
our $AUTOLOAD;
(my $method = $AUTOLOAD) =~ s/.*:://;
my $target = $self->target;
unless ($target) {
$self->throw("Can't call $method on symlink");
return;
}
$target->$method(@_);
}
sub target {
my $self = shift;
return *$self->{target} if *$self->{target};
my %seen;
my $link = $self;
my $new;
while ($new = $link->readlink) {
my $type = $new->type or return;
last if $type eq 'file';
last if $type eq 'dir';
return unless $type eq 'link';
return if $seen{$new->name}++;
$link = $new;
}
*$self->{target} = $new;
}
=encoding utf8
=head1 NAME
IO::All::Link - Symbolic Link Support for IO::All
=head1 SYNOPSIS
See L<IO::All>.
=head1 DESCRIPTION
=head1 AUTHOR
Ingy döt Net <ingy@cpan.org>
=head1 COPYRIGHT
Copyright (c) 2004. Brian Ingerson.
Copyright (c) 2006, 2008. Ingy döt Net.
This program is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.
See http://www.perl.com/perl/misc/Artistic.html
=cut
1;
|