#!/usr/bin/env perl use strict; use warnings; use constant { BASE_URL => 'https://www.example.com/reg/', LS => '/usr/bin/ls', LS_OPTS => [qw{-l -h}], }; use IPC::System::Simple 'capturex'; die "Usage: $0 dir\n" unless @ARGV; my $dir = $ARGV[0]; my $base_dir = '/home/ken/tmp/pm_11147164_web_dir_listing/'; my $dir_path = $base_dir . $dir; die "ERROR: User '$dir' does not exist.\n" unless -e $dir_path && -d _; chdir $base_dir; my @listing; for (capturex(LS, @{+LS_OPTS}, $dir_path)) { next if 0 == index $_, 'total'; /^(.*?\s)(\S+)$/; push @listing, qq{
User: $dir
\n"; if (@listing) { print "User '$dir' has no files.
\n"; } ####
$ ls -lR
.:
total 4
drwxr-xr-x 1 ken None 0 Oct 1 05:18 u1
drwxr-xr-x 1 ken None 0 Oct 1 04:00 u2
drwxr-xr-x 1 ken None 0 Oct 1 04:33 u3
-rwxr-xr-x 1 ken None 839 Oct 1 06:07 web_dir_listing.pl
./u1:
total 5
-rw-r--r-- 1 ken None 2002 Oct 1 05:11 u1_a
-rw-r--r-- 1 ken None 501 Oct 1 05:18 u1_b
./u2:
total 4
-rw-r--r-- 1 ken None 4004 Oct 1 05:18 u2_c
-rw-r--r-- 1 ken None 0 Oct 1 04:00 u2_d
./u3:
total 0
$ ./web_dir_listing.pl u1
User: u1
$ ./web_dir_listing.pl u2
User: u2
$ ./web_dir_listing.pl u3
User: u3
User 'u3' has no files.
$ ./web_dir_listing.pl u4
ERROR: User 'u4' does not exist.
$ ./web_dir_listing.pl 'u1;pwd'
ERROR: User 'u1;pwd' does not exist.
$ ./web_dir_listing.pl
Usage: ./web_dir_listing.pl dir