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 )