Chinaunix

标题: command line [打印本页]

作者: shihyu    时间: 2006-10-06 16:25
标题: command line
  1. #! /usr/bin/perl

  2. use strict;

  3. # 使用 IO::Socket 模組
  4. use IO::Socket;

  5. # 取得命令列中的網頁位址,放入 $url 中
  6. my $url=shift || die "您沒有輸入 url 網址!\n";

  7. # 比對網頁位址是否合乎格式?
  8. my ($host, $file) = $url =~ m!http://([^/]+)(/[^\#]*)!;  #(註1)

  9. # 若比對正確,才抓取
  10. if ($host) {

  11.         # 產生一個 IO::Socket::INET 物件
  12.         my $socket = IO::Socket::INET->new(
  13.                 PeerAddr => $host,                        # 指定主機位址
  14.                 PeerPort => 'http(80)'                # 指定 port 號
  15.         );

  16.         # 針對 $socket 寫入,此動作形同對 $host 主機提出網頁檔 $file 的要求
  17.         print $socket "GET $file HTTP/1.0\n\n";

  18.         # 只要由 $socket 讀到一列資料,就處理之
  19.         while(my $line=<$socket>) {

  20.                 # 把 CR (^M) 換掉
  21.                 $line =~ s/\r//g;

  22.                 # 顯示該列內容 (註2)
  23.                 print $line;

  24.         }

  25. }
复制代码



使用法:

1. 存成 wget.pl

2. chmod +x wget.pl

3. ./wget.pl http://linux.tnc.edu.tw/techdoc/FSF.htm > FSF.htm




# 取得命令列中的網頁位址,放入 $url 中
my $url=shift || die "您沒有輸入 url 網址!\n";  #為什麼這樣就可以從command line 取得網址??


不需要使用@ARGV???

[ 本帖最后由 shihyu 于 2006-10-6 16:32 编辑 ]
作者: 兰花仙子    时间: 2006-10-06 20:20
原帖由 shihyu 于 2006-10-6 16:25 发表
[code]#! /usr/bin/perl

use strict;

# 使用 IO::Socket 模組
use IO::Socket;

# 取得命令列中的網頁位址,放入 $url 中
my $url=shift || die "您沒有輸入 url 網址!\n";

# 比對網頁位址 ...



shift 既可以从@_里取数据,也可从@ARGV里取数据。
please see: perldoc -f shift




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2