AnyEvent-FTP
view release on metacpan or search on metacpan
share/ppt/ls.pl view on Meta::CPAN
$Attributes->{$a}->size }
@Entries;
}
# ------ sort by time, most recent first
} elsif (exists($Options->{'t'}) ||
exists($Options->{'c'}) ||
exists($Options->{'u'})) {
if (exists($Options->{'r'})) {
if (exists($Options->{'u'})) {
@Entries = sort
{ $Attributes->{$a}->atime <=>
$Attributes->{$b}->atime }
@Entries;
} elsif (exists($Options->{'c'})) {
@Entries = sort
{ $Attributes->{$a}->ctime <=>
$Attributes->{$b}->ctime }
@Entries;
} else {
@Entries = sort
{ $Attributes->{$a}->mtime <=>
$Attributes->{$b}->mtime }
@Entries;
}
} else {
if (exists($Options->{'u'})) {
@Entries = sort
{ $Attributes->{$b}->atime <=>
$Attributes->{$a}->atime }
@Entries;
} elsif (exists($Options->{'c'})) {
@Entries = sort
{ $Attributes->{$b}->ctime <=>
$Attributes->{$a}->ctime }
@Entries;
} else {
@Entries = sort
{ $Attributes->{$b}->mtime <=>
$Attributes->{$a}->mtime }
@Entries;
}
}
# ------ sort by name
} elsif (!exists($Options->{'f'})) {
if (exists($Options->{'r'})) {
@Entries = sort { $b cmp $a } @Entries;
} else {
@Entries = sort { $a cmp $b } @Entries;
}
}
# ------ return list sorted by options (or unsorted if -f)
return @Entries;
}
# ------ process arguments
getopts('1ACFLRSTWacdfgiklmnopqrstux', \%Options);
# ------ get (or guess) window size
if (ioctl(STDOUT, $TIOCGWINSZ, $WinSize)) {
($WinRows, $WinCols, $Xpixel, $Ypixel) = unpack('S4', $WinSize);
} else {
$WinCols = 80;
}
$Attributes = stat(STDOUT);
if ($Attributes->mode & 0140000) {
$Options{'1'} = '1';
}
# ------ current directory if no arguments
if ($#ARGV < 0) {
List('.', \%Options, 0, DirEntries(\%Options, "."));
# ------ named files/directories if arguments
} else {
$ArgCount = -1;
foreach $Arg (@ARGV) {
if (!exists($Options{'d'}) && -d $Arg) {
$ArgCount++;
push(@Dirs, $Arg);
} else {
$ArgCount += 2;
push(@Files, $Arg);
}
}
foreach $Arg (@Files) {
$Attributes{$Arg} = stat($Arg);
}
foreach $Arg (Order(\%Options, \%Attributes, @Files)) {
$First = 0;
List($Arg, \%Options, 0,
DirEntries(\%Options, $Arg));
}
foreach $Arg (@Dirs) {
$Attributes{$Arg} = stat($Arg);
}
foreach $Arg (Order(\%Options, \%Attributes, @Dirs)) {
if (!exists($Options{'R'})) {
print "\n" if (!$First);
$First = 0;
print "$Arg:\n" if ($ArgCount > 0);
}
List($Arg, \%Options, 0,
DirEntries(\%Options, $Arg));
}
}
__END__
=pod
=head1 NAME
ls - list file/directory information
=head1 SYNOPSIS
ls [-1RSacdfiklnrstu] [file ...]
( run in 1.126 second using v1.01-cache-2.11-cpan-e1769b4cff6 )