#!/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{
  • $1$2
  • \n}; } print "

    User: $dir

    \n"; if (@listing) { print "\n"; } else { 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