Blame


1 ffd9a51f 2023-08-04 jrmu #!/usr/bin/perl
2 ffd9a51f 2023-08-04 jrmu
3 ffd9a51f 2023-08-04 jrmu # Write a program to ask the user for a directory name, then change
4 ffd9a51f 2023-08-04 jrmu # to that directory. If the user enters a line with nothing but
5 ffd9a51f 2023-08-04 jrmu # whitespace, change to his or her home directory as a default.
6 ffd9a51f 2023-08-04 jrmu # After changing, list the ordinary directory contents (not the
7 ffd9a51f 2023-08-04 jrmu # items whose names begin with a dot) in alphabetical order. (Hint:
8 ffd9a51f 2023-08-04 jrmu # will that be easier to do with a directory handle or with a
9 ffd9a51f 2023-08-04 jrmu # glob?) If the directory change doesn't succeed, just alert the
10 ffd9a51f 2023-08-04 jrmu # user--but don't try showing the contents.
11 ffd9a51f 2023-08-04 jrmu
12 ffd9a51f 2023-08-04 jrmu use v5.24;
13 ffd9a51f 2023-08-04 jrmu use warnings;
14 ffd9a51f 2023-08-04 jrmu use strict;
15 ffd9a51f 2023-08-04 jrmu use utf8;
16 ffd9a51f 2023-08-04 jrmu use Cwd;
17 ffd9a51f 2023-08-04 jrmu
18 ffd9a51f 2023-08-04 jrmu if (scalar(@ARGV) > 1) {
19 ffd9a51f 2023-08-04 jrmu die "Usage: $0 [dir]";
20 ffd9a51f 2023-08-04 jrmu }
21 ffd9a51f 2023-08-04 jrmu my $dir = shift @ARGV;
22 ffd9a51f 2023-08-04 jrmu if (!defined($dir) || $dir =~ /\A\s*\z/) {
23 ffd9a51f 2023-08-04 jrmu chdir or die "Unable to change to $ENV{HOME}: $!";
24 ffd9a51f 2023-08-04 jrmu } else {
25 ffd9a51f 2023-08-04 jrmu chdir $dir or die "Unable to change to $dir: $!";
26 ffd9a51f 2023-08-04 jrmu }
27 ffd9a51f 2023-08-04 jrmu
28 ffd9a51f 2023-08-04 jrmu my @files = glob '*';
29 ffd9a51f 2023-08-04 jrmu print join "\n", @files;
30 ffd9a51f 2023-08-04 jrmu print "\n";