--- /dev/null
+print "1..6\n";
+
+
+use File::Listing;
+
+$dir = <<'EOL';
+total 68
+drwxr-xr-x 4 aas users 1024 Mar 16 15:47 .
+drwxr-xr-x 11 aas users 1024 Mar 15 19:22 ..
+drwxr-xr-x 2 aas users 1024 Mar 16 15:47 CVS
+-rw-r--r-- 1 aas users 2384 Feb 26 21:14 Debug.pm
+-rw-r--r-- 1 aas users 2145 Feb 26 20:09 IO.pm
+-rw-r--r-- 1 aas users 3960 Mar 15 18:05 MediaTypes.pm
+-rw-r--r-- 1 aas users 792 Feb 26 20:12 MemberMixin.pm
+drwxr-xr-x 3 aas users 1024 Mar 15 18:05 Protocol
+-rw-r--r-- 1 aas users 5613 Feb 26 20:16 Protocol.pm
+-rw-r--r-- 1 aas users 5963 Feb 26 21:27 RobotUA.pm
+-rw-r--r-- 1 aas users 5071 Mar 16 12:25 Simple.pm
+-rw-r--r-- 1 aas users 8817 Mar 15 18:05 Socket.pm
+-rw-r--r-- 1 aas users 2121 Feb 5 14:22 TkIO.pm
+-rw-r--r-- 1 aas users 19628 Mar 15 18:05 UserAgent.pm
+-rw-r--r-- 1 aas users 2841 Feb 5 19:06 media.types
+
+CVS:
+total 5
+drwxr-xr-x 2 aas users 1024 Mar 16 15:47 .
+drwxr-xr-x 4 aas users 1024 Mar 16 15:47 ..
+-rw-r--r-- 1 aas users 545 Mar 16 15:47 Entries
+-rw-r--r-- 1 aas users 39 Mar 10 09:05 Repository
+-rw-r--r-- 1 aas users 19 Mar 10 09:05 Root
+
+Protocol:
+total 37
+drwxr-xr-x 3 aas users 1024 Mar 15 18:05 .
+drwxr-xr-x 4 aas users 1024 Mar 16 15:47 ..
+drwxr-xr-x 2 aas users 1024 Mar 15 18:05 CVS
+-rw-r--r-- 1 aas users 4646 Feb 26 20:13 file.pm
+-rw-r--r-- 1 aas users 13006 Mar 15 18:05 ftp.pm
+-rw-r--r-- 1 aas users 5935 Mar 6 10:29 gopher.pm
+-rw-r--r-- 1 aas users 5453 Mar 6 10:29 http.pm
+-rw-r--r-- 1 aas users 2365 Feb 26 20:13 mailto.pm
+
+Protocol/CVS:
+total 5
+drwxr-xr-x 2 aas users 1024 Mar 15 18:05 .
+drwxr-xr-x 3 aas users 1024 Mar 15 18:05 ..
+-rw-r--r-- 1 aas users 238 Mar 15 18:05 Entries
+-rw-r--r-- 1 aas users 48 Mar 10 09:05 Repository
+-rw-r--r-- 1 aas users 19 Mar 10 09:05 Root
+EOL
+
+@dir = parse_dir($dir, undef, 'unix');
+
+print int(@dir) ." lines found\n";
+@dir != 25 && print "not ";
+print "ok 1\n";
+
+for (@dir) {
+ ($name, $type, $size, $mtime, $mode) = @$_;
+ $size ||= 0; # ensure that it is defined
+ printf "%-25s $type %6d ", $name, $size;
+ print scalar(localtime($mtime));
+ printf " %06o", $mode;
+ print "\n";
+}
+
+# Pick out the Socket.pm line as the sample we check carefully
+($name, $type, $size, $mtime, $mode) = @{$dir[9]};
+
+$name eq "Socket.pm" || print "not ";
+print "ok 2\n";
+
+$type eq "f" || print "not ";
+print "ok 3\n";
+
+$size == 8817 || print "not ";
+print "ok 4\n";
+
+# Must be careful when checking the time stamps because we don't know
+# which year if this script lives for a long time.
+$timestring = scalar(localtime($mtime));
+$timestring =~ /Mar\s+15\s+18:05/ or print "not ";
+print "ok 5\n";
+
+$mode == 0100644 || print "not ";
+print "ok 6\n";