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 that works like mv, renaming the first
4 ffd9a51f 2023-08-04 jrmu # command-line argument to the second command-line argument. (You
5 ffd9a51f 2023-08-04 jrmu # don't need to handle any of the options of mv or additional
6 ffd9a51f 2023-08-04 jrmu # arguments.) Remember to allow for the destination to be a
7 ffd9a51f 2023-08-04 jrmu # directory; if it is, use the same original basename in the new
8 ffd9a51f 2023-08-04 jrmu # directory.
9 ffd9a51f 2023-08-04 jrmu
10 ffd9a51f 2023-08-04 jrmu use v5.24;
11 ffd9a51f 2023-08-04 jrmu use warnings;
12 ffd9a51f 2023-08-04 jrmu use strict;
13 ffd9a51f 2023-08-04 jrmu use utf8;
14 ffd9a51f 2023-08-04 jrmu use File::Spec::Functions;
15 ffd9a51f 2023-08-04 jrmu use File::Basename;
16 ffd9a51f 2023-08-04 jrmu
17 ffd9a51f 2023-08-04 jrmu if (scalar(@ARGV) != 2) {
18 ffd9a51f 2023-08-04 jrmu die "Usage: $0 source target";
19 ffd9a51f 2023-08-04 jrmu }
20 ffd9a51f 2023-08-04 jrmu my ($source, $target) = @ARGV;
21 ffd9a51f 2023-08-04 jrmu if (-d $target) {
22 ffd9a51f 2023-08-04 jrmu $target = catfile($target, basename($source));
23 ffd9a51f 2023-08-04 jrmu }
24 ffd9a51f 2023-08-04 jrmu
25 ffd9a51f 2023-08-04 jrmu rename $source $target or die "Unable to move "$source" to "$target": $!";