-
Notifications
You must be signed in to change notification settings - Fork 48
/
uri-test
executable file
·60 lines (47 loc) · 1.14 KB
/
uri-test
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#!/usr/bin/perl -w
use strict;
use warnings;
sub usage {
my $prog = $0; $prog =~ s,.*/,,;
die "Usage: $prog <uri> [<method> [<args>]...]\n";
}
usage() unless @ARGV;
my $uri = shift;
my $orig = $uri;
require URI;
warn "Using: $INC{'URI.pm'}\n" if $INC{'URI.pm'} ne 'lib/URI.pm' and -t STDOUT and -t STDIN;
my @ctor_arg = ($uri);
push(@ctor_arg, shift) while @ARGV && $ARGV[0] =~ s/^\+//;
$uri = URI->new(@ctor_arg);
if (@ARGV) {
my $method = shift;
my $list_context = ($method =~ s/^\@//);
#print "URI->new(\"$uri\")->$method ==> ";
for (@ARGV) {
undef($_) if $_ eq "UNDEF";
}
my @result;
if ($list_context) {
@result = $uri->$method(@ARGV);
} else {
@result = scalar($uri->$method(@ARGV));
}
for (@result) {
if (defined) {
$_ = "«$_»" if /^\s*$/;
} else {
$_ = "<undef>";
}
}
print join(" ", @result), "\n";
}
print "$uri\n" unless $orig eq $uri;
exit;
# Some extra methods that might be nice
sub UNIVERSAL::class { ref($_[0]) }
sub UNIVERSAL::dump {
require Data::Dumper;
my $d = Data::Dumper->Dump(\@_, ["self", "arg1", "arg2", "arg3", "arg4"]);
chomp($d);
$d;
}