File Coverage

blib/lib/ARGV/Abs.pm
Criterion Covered Total %
statement 12 18 66.6
branch 0 2 0.0
condition n/a
subroutine 4 5 80.0
pod n/a
total 16 25 64.0


line stmt bran cond sub pod time code
1 1     1   979 use 5.005;
  1         5  
  1         43  
2 1     1   5 use strict;
  1         2  
  1         31  
3 1     1   5 use warnings;
  1         1  
  1         57  
4              
5             package ARGV::Abs;
6             {
7             $ARGV::Abs::VERSION = '1.01';
8             }
9              
10 1     1   4 use File::Spec;
  1         3  
  1         262  
11              
12              
13             sub import
14             {
15             # Base directory for resolving paths
16 0     0     my $base = $_[1];
17 0 0         unless (defined $base) {
18 0           require Cwd;
19 0           $base = Cwd::getcwd();
20             }
21 0           @ARGV = map { File::Spec->rel2abs($_, $base) } @ARGV;
  0            
22             }
23              
24             1;
25              
26             =head1 NAME
27              
28             ARGV::Abs - Transform paths in @ARGV to absolute paths
29              
30             =head1 VERSION
31              
32             version 1.01
33              
34             =head1 SYNOPSIS
35              
36             From one-liners (see L):
37              
38             perl -MARGV::Abs -E "..." foo.txt bar.txt ...
39              
40             From a script where B arguments are expected to be filenames:
41              
42             use ARG::Abs;
43             ...
44              
45             From a script that takes command-line options that should not be processed by
46             C :
47              
48             # Skipping import
49             use ARGV::Abs ();
50            
51             ... extract options from @ARGV ...
52            
53             # Transform paths: do import now
54             ARGV::Abs->import;
55              
56             Resolve relative paths using base directory F:
57              
58             perl -MARGV::Abs=/tmp -E "..." foo.txt bar.txt ...
59              
60             use ARGV::Abs '/tmp';
61              
62             =head1 DESCRIPTION
63              
64             This module transform all elements of C<@ARGV> into absolute pathnames.
65              
66             Relative paths are resolved by default relative to the current directory.
67             To use another base directory, pass it as the argument for import.
68              
69             =head1 SEE ALSO
70              
71             Some other modules that add magic to C<@ARGV>: L, L, L.
72              
73             =head1 AUTHOR
74              
75             Olivier MenguE, L.
76              
77             =head1 COPYRIGHT & LICENSE
78              
79             Copyright E 2011 Olivier MenguE.
80              
81             This library is free software; you can redistribute it and/or modify it under
82             the same terms as Perl 5 itself.
83              
84             =cut