📄 get_jdk.pl
字号:
#!/usr/bin/perl -w# Based on an ftp client found in the LWP Cookbook and# revised by Nathan V. Patwardhan <nvp@ora.com>.# Copyright 1997 O'Reilly and Associates# This package may be copied under the same terms as Perl itself.## Code appears in the Unix version of the Perl Resource Kituse LWP::UserAgent;use URI::URL;my $ua = new LWP::UserAgent;# check to see if a JDK port exists for the OS. i'd say# that we should use solaris by default, but a 9meg tarfile# is a hard pill to swallow if it won't work for somebody. :-)my $os_type = $^O; my $URL = lookup_jdk_port($os_type);die("No JDK port found. Contact your vendor for details. Exiting.\n") if $URL eq '';print "A JDK port for your OS has been found.\nContacting: ".$URL."\n";# Now, parse the URL using URI::URLmy($jdk_file) = (url($URL)->crack)[5]; $jdk_file =~ /(.+)\/(.+)/; $jdk_file = $2;print "Attempting to download: $jdk_file\n";my $expected_length;my $bytes_received = 0;open(OUT, ">".$jdk_file) or die("Can't open $jdk_file: $!");$ua->request(HTTP::Request->new('GET', $URL), sub { my($chunk, $res) = @_; $bytes_received += length($chunk); unless (defined $expected_length) { $expected_length = $res->content_length || 0; } if ($expected_length) { printf STDERR "%d%% - ", 100 * $bytes_received / $expected_length; } print STDERR "$bytes_received bytes received\n"; print OUT $chunk; });close(OUT);sub lookup_jdk_port { my($port_os) = @_; my $jdk_hosts = 'jdk_hosts'; my %HOSTS = (); open(CFG, $jdk_hosts) or die("hosts error: $!"); while(<CFG>) { chop; ($os, $host) = split(/\s*=>\s*/, $_); next unless $os eq $port_os; push(@HOSTS, $host); } close(CFG); return "" unless @HOSTS; return $HOSTS[rand @HOSTS]; # Pick one at random.}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -