分享好友 编程语言首页 频道列表

Perl 与Form

perl  2023-02-10 10:350
说明事项:
  1. 這個範例用來說明如何經由網頁上的HTML form 表單元件來呼叫伺服器端的perl 程式。这个范例用来说明如何经由网页上的HTML form 表单元件来呼叫伺服器端的perl 程式。
  2. 首先在網頁上設計表單元件,這個範例是設計一個按鈕,其原始碼如下:首先在网页上设计表单元件,这个范例是设计一个按钮,其原始码如下:

     

    <form action="1st.pl"> <form action="1st.pl">
    <input type="submit" value="Hello World"> <input type="submit" value="Hello World">
    </form> </form>
    

    基本上,該表單使得使用者在按鈕上點一下的話,它會呼叫伺服器端名為1st.pl的程式。基本上,该表单使得使用者在按钮上点一下的话,它会呼叫伺服器端名为1st.pl的程式。 如果讀者對於表單元件不熟悉的話,可以參考Form Pages如果读者对于表单元件不熟悉的话,可以参考Form Pages

     

  3. 1st.pl的內容跟之前的hello.pl類似,其程式碼如下: 1st.pl的内容跟之前的hello.pl类似,其程式码如下:

     

    #!/usr/bin/perl #!/usr/bin/perl
    print "Content-type: text/html\n\n"; print "Content-type: text/html\n\n";
    print "<html><head><title>My First Perl Program</title></head>\n"; print "<html><head><title>My First Perl Program</title></head>\n";
    print "<body><h1>Hello World</h1></body></html>\n"; print "<body><h1>Hello World</h1></body></html>\n";
    

    • Perl 的註解符號是"#"。 Perl 的注解符号是"#"。
    • print "string";也可寫成print("string"); print "string";也可写成print("string");
    • "Content-type: text/html" 是所謂的MIME header;它的功能在於告訴瀏覽器即將傳送過來的資料是HTML 網頁。 "Content-type: text/html" 是所谓的MIME header;它的功能在于告诉浏览器即将传送过来的资料是HTML 网页。
    • "\n" 代表newline。 "\n" 代表newline。 依據規定,在MIME header 後, 必須要有兩個"\n"。依据规定,在MIME header 后, 必须要有两个"\n"。
    • 在Perl 中, 字串(string) 可以以雙括號" 或單括號' 表示。 如"string" 與'string' 都代表同一個字串。 不過, "string\n" 與'string\n' 便不同。 試試看!在Perl 中, 字串(string) 可以以双括号" 或单括号' 表示。 如"string" 与'string' 都代表同一个字串。 不过, "string\n" 与'string\n' 便不同。 试试看!
    • 函數substr(string, offset)會將string 位於offset 位置之後的子字串回傳;string 的索引位置從零開始。函数substr(string, offset)会将string位于offset位置之后的子字串回传;string的索引位置从零开始。
      1. print substr("Hello World", 6);會回傳World。 print substr("Hello World", 6);会回传World。
      2. print substr("Hello World", -2);會回傳字串的最後兩個字元,也就是ld。 print substr("Hello World", -2);会回传字串的最后两个字元,也就是ld。

Perl 與Form 結合(II, GET) Perl 与Form 结合(II, GET)

請輸入文字:请输入文字:
說明事項:说明事项:
  1. 在這個範例中,我們說明如何將使用者在網頁上輸入的資料傳送到伺服器端的程式。在这个范例中,我们说明如何将使用者在网页上输入的资料传送到伺服器端的程式。 在HTTP 的協定中,資料傳送的方式有兩種,一種是GET,另一種是POST; 在這個範例我們先說明GET。在HTTP 的协定中,资料传送的方式有两种,一种是GET,另一种是POST; 在这个范例我们先说明GET。

     

  2. 表單元件的原始碼如下:表单元件的原始码如下:

     

    01: <form method="GET" action="2nd.pl"> 01: <form method="GET" action="2nd.pl">
    02: 請輸入文字:<input type="text" name="input"> 02: 请输入文字:<input type="text" name="input">
    03: <input type="submit" value="Submit"> 03: <input type="submit" value="Submit">
    04: <input type="reset" value="Clear"> 04: <input type="reset" value="Clear">
    05: </form> 05: </form>
    

    第01 行說明,如果使用者輸入資料之後,瀏覽器會以GET 的方式將資料傳送給2nd.pl ;第02 行說明,這是一個文字欄位,而使用者輸入的資料在傳送給伺服器的程式時,該程式可以格式為input=資料 方式來取得資料。第01行说明,如果使用者输入资料之后,浏览器会以GET的方式将资料传送给2nd.pl ;第02行说明,这是一个文字栏位,而使用者输入的资料在传送给伺服器的程式时,该程式可以格式为input=资料方式来取得资料。 如果你在文字欄位上輸入Eric,並按下Submit,你會看到如下的畫面:如果你在文字栏位上输入Eric,并按下Submit,你会看到如下的画面:

    Perl 与Form

    在畫面中,請留意兩件事情:第一,在URL 欄位中,它在程式名稱(2nd.pl)後面加上了?input=Eric ,它代表它利用了GET 的方式將input=Eric傳送給2nd.pl;第二,2nd.pl 將URL 中的資料擷取出來,並顯示在網頁上, 擷取的方式如以下說明。在画面中,请留意两件事情:第一,在URL栏位中,它在程式名称(2nd.pl)后面加上了?input=Eric ,它代表它利用了GET的方式将input=Eric传送给2nd.pl;第二,2nd.pl 将URL 中的资料撷取出来,并显示在网页上, 撷取的方式如以下说明。

     

  3. 2nd.pl的原始碼如下: 2nd.pl的原始码如下:
    #!/usr/local/bin/perl #!/usr/local/bin/perl
    print "Content-type: text/plain\n\n"; print "Content-type: text/plain\n\n";
    $input = $ENV{'QUERY_STRING'}; $input = $ENV{'QUERY_STRING'};
    print "$input\n"; print "$input\n";
    

    GET 的傳送方式是將資料傳送到伺服器的環境變數內,而其中代表input=Eric的環境變數名稱為QUERY_STRING ,所以Perl 經由$ENV{'QUERY_STRING'}將名為QUERY_STRING的內容取出,並指定給變數input。 GET的传送方式是将资料传送到伺服器的环境变数内,而其中代表input=Eric的环境变数名称为QUERY_STRING ,所以Perl经由$ENV{'QUERY_STRING'}将名为QUERY_STRING的内容取出,并指定给变数input。

     

  4. 除了QUERY_STRING的環境變數,是否還有其他的環境變數?除了​​QUERY_STRING的环境变数,是否还有其他的环境变数? 我們可以經由以下程式得到答案,你也可以點一下按鈕來觀察。我们可以经由以下程式得到答案,你也可以点一下按钮来观察。

     

    #!/usr/bin/perl #!/usr/bin/perl
    print "Content-type: text/html\n\n"; print "Content-type: text/html\n\n";
    print "AUTH_TYPE is $ENV{'AUTH_TYPE'} <br>"; print "AUTH_TYPE is $ENV{'AUTH_TYPE'} <br>";
    print "CONTENT_LENGTH is $ENV{'CONTENT_LENGTH'} <br>"; print "CONTENT_LENGTH is $ENV{'CONTENT_LENGTH'} <br>";
    print "GATEWAY_INTERFACE is $ENV{'GATEWAY_INTERFACE'} <br>"; print "GATEWAY_INTERFACE is $ENV{'GATEWAY_INTERFACE'} <br>";
    print "HTTP_USER_AGENT is $ENV{'HTTP_USER_AGENT'} <br>"; print "HTTP_USER_AGENT is $ENV{'HTTP_USER_AGENT'} <br>";
    print "HTTP_REFERER is $ENV{'HTTP_REFERER'} <br>"; print "HTTP_REFERER is $ENV{'HTTP_REFERER'} <br>";
    print "QUERY_STRING is $ENV{'QUERY_STRING'} <br>"; print "QUERY_STRING is $ENV{'QUERY_STRING'} <br>";
    print "REMOTE_ADDR is $ENV{'REMOTE_ADDR'} <br>"; print "REMOTE_ADDR is $ENV{'REMOTE_ADDR'} <br>";
    print "REMOTE_HOST is $ENV{'REMOTE_HOST'} <br>"; print "REMOTE_HOST is $ENV{'REMOTE_HOST'} <br>";
    print "REMOTE_IDENT is $ENV{'REMOTE_IDENT'} <br>"; print "REMOTE_IDENT is $ENV{'REMOTE_IDENT'} <br>";
    print "REMOTE_USER is $ENV{'REMOTE_USER'} <br>"; print "REMOTE_USER is $ENV{'REMOTE_USER'} <br>";
    print "REQUEST_METHOD is $ENV{'REQUEST_METHOD'} <br>"; print "REQUEST_METHOD is $ENV{'REQUEST_METHOD'} <br>";
    print "SCRIPT_NAME is $ENV{'SCRIPT_NAME'} <br>"; print "SCRIPT_NAME is $ENV{'SCRIPT_NAME'} <br>";
    print "SERVER_SOFTWARE is $ENV{'SERVER_SOFTWARE'} <br>"; print "SERVER_SOFTWARE is $ENV{'SERVER_SOFTWARE'} <br>";
    print "SERVER_NAME is $ENV{'SERVER_NAME'} <br>"; print "SERVER_NAME is $ENV{'SERVER_NAME'} <br>";
    print "SERVER_PROTOCOL is $ENV{'SERVER_PROTOCOL'} <br>"; print "SERVER_PROTOCOL is $ENV{'SERVER_PROTOCOL'} <br>";
    

Perl 與Form 結合(III, POST) Perl 与Form 结合(III, POST)

請輸入文字:请输入文字:
說明事項:说明事项:
  1. 這個範例用於說明如何利用POST 的方式傳送使用者輸入的資料,以及perl 程式如何擷取這些資料。这个范例用于说明如何利用POST 的方式传送使用者输入的资料,以及perl 程式如何撷取这些资料。 我們使用的表單跟前一個範例非常類似,差別只在method設定為POST ,而程式名稱改成3rd.pl我们使用的表单跟前一个范例非常类似,差别只在method设定为POST ,而程式名称改成3rd.pl

     

  2. 若跟之前一樣,在文字欄位內輸入Eric,則執行的畫面如下:若跟之前一样,在文字栏位内输入Eric,则执行的画面如下:

    Perl 与Form

    其中,請特別注意畫面中URL 欄位,並不像之前會出現?input=Eric的訊息,而且由於這個特色,許多系統的設計都採用POST,而不採用GET。其中,请特别注意画面中URL栏位,并不像之前会出现?input=Eric的讯息,而且由于这个特色,许多系统的设计都采用POST,而不采用GET。 當然,POST 的優點不僅如此,如以下程式中所顯示的,POST 傳送給程式的資料是經由標準輸入裝置(STDIN),因此沒有資料量的上限;反之,GET 是經由環境變數而傳遞,因此有資料量的限制。当然,POST 的优点不仅如此,如以下程式中所显示的,POST 传送给程式的资料是经由标准输入装置(STDIN),因此没有资料量的上限;反之,GET 是经由环境变数而传递,因此有资料量的限制。

     

  3. 3rd.pl的原始碼如下: 3rd.pl的原始码如下:
    #!/usr/local/bin/perl #!/usr/local/bin/perl
    print "Content-type: text/plain\n\n"; print "Content-type: text/plain\n\n";
    $length=$ENV{'CONTENT_LENGTH'}; $length=$ENV{'CONTENT_LENGTH'};
    read(STDIN, $input, $length); read(STDIN, $input, $length);
    print "$input\n"; print "$input\n";
    
    • 程式先經由環境變數CONTENT_LENGTH得知資料的總量,然後經由標準輸入裝置讀取資料,並存放於變數input內。程式先经由环境变数CONTENT_LENGTH得知资料的总量,然后经由标准输入装置读取资料,并存放于变数input内。
    • 跟所有程式一樣,Perl 也內建三個標準裝置: STDIN, STDOUT, STDERR 分別代表標準輸入、標準輸出、以及標準錯誤。跟所有程式一样,Perl 也内建三个标准装置: STDIN, STDOUT, STDERR 分别代表标准输入、标准输出、以及标准错误。

查看更多关于【perl】的文章

展开全文
相关推荐
反对 0
举报 0
评论 0
图文资讯
热门推荐
优选好物
更多热点专题
更多推荐文章
Linux下安装Perl和Perl的DBI模块
今天在虚拟机测试shell脚本的时候,有些命令使用不了。比如说 mysqlhotcopy ,它提示Perl的版本太低。我用的 RedHat9 的Perl才5.8.0版本。。。(2002年以前的)严重过时。所以重新安装了新版本的 Perl,过程记录如下: 1、在官方网站下载新版本的源码包:http:

0评论2023-03-16464

Perl学习 perl培训
http://www.sun126.com/perl5/perl5-1.htm翻译: flamephoenix 第一章 概述一、Perl是什么?二、Perl在哪里?三、运行四、注释一、Perl是什么?  Perl是Practical Extraction and Report Language的缩写,它是由Larry Wall设计的,并由他不断更新和维护,用

0评论2023-02-10506

- calm_水手">Perl中的箭头符-> - calm_水手
Perl中的箭头符-2012-05-21 17:14 calm_水手 阅读(623) 评论(0) 编辑 收藏 举报  有两种用法,都和解引用有关。第一种用法,就是解引用。根据 - 后面跟的符号的不同,解不同类型的引用,-[] 表示解数组引用,-{} 表示解散列引用,-() 表示解子程序引

0评论2023-02-09731

perl脚本语言学习 perl脚本调用perl脚本
来公司的第二个星期便看了一下perl语言,发现掌握一门脚本语言还是非常有用的。到现在为止已经入职两个月,用perl脚本做了这些活:1. 修改了公司的一个爬取网页源代码的脚本2. 改进了一个出特征库的脚本,根据svn status的状态,来优化,将只需要添加的DB的数

0评论2023-02-09317

Perl模块的安装方法 perl 安装模块
1. 下载离线安装包 *.tar.gz的形式解包后,#perl Makefile.PL#make#make install2. 在联网的情况下,通过CPAN安装# perl -MCPAN -e shellcpan install PAR::Packer 

0评论2023-02-09909

Perl像C一样强大,像awk、sed等脚本描述语言一样方便。
Perl是由Larry Wall设计的,并由他不断更新和维护的编程语言。Perl具有高级语言(如C)的强大能力和灵活性。事实上,你将看到,它的许多特性是从C语言中借用来的。Perl与 脚本语言一样,Perl不需要编译器和链接器来运行代码,你要做的只是写出程序并告诉Perl

0评论2023-02-09370

27-Perl 进程管理
1.Perl 进程管理Perl 中你可以以不同的方法来创建进程。本教程将讨论一些进程的管理方法。你可以使用特殊变量 $$ 或 $PROCESS_ID 来获取进程 ID。%ENV 哈希存放了父进程,也就是shell中的环境变量,在Perl中可以修改这些变量。exit() 通常用于退出子进程,主

0评论2023-02-09436

在perl中简单的正则匹配 正则匹配或的使用
(一)、在perl中关于元字符的匹配元字符代表含义点号( .)匹配处换行符以外的任何单字符星号(*)匹配前面的内容零次或多次反斜线屏蔽元字符的特殊含义。\\代表\,\.匹配点号.*匹配所有的字符串加号(+)匹配前一个条目一次以上问号(?)表示前面一个条目可

0评论2023-02-09908

Perl WEB 开发之 Template
由于工作需要, 最近开始使用Perl来作为服务器脚本来处理Web 请求。系统采用的Template 来做Web page 的模板,用来简化繁琐但并不困难的HTML标签的编写。Question 1: Template Toolkit 是啥?Template Toolkit是一组Perl Module的集合, 它实现了一种快速的

0评论2023-02-09418

Perl到底是什么意思? perpol意思
学习perl也有一段时间了,如果连perl是什么意思都不知道,那就太汗颜了,听好啦!perl == Practical Exstraction and Report Language,中文叫做实用抽取和报表语言。

0评论2023-02-09437

perl-cgi-form2
代码:         #!/usr/local/bin/perl        use CGI ':standard';        print header;        print start_html("Example CGI.pm Form");        print "h1 Example CGI.pm Form/h1\n";      

0评论2023-02-09501

Perl实战(一) perl进阶
在Perl中,我们可以通过uc,lc,\U,\L来修改变量的值。其中uc,\U可以将变量中的字母全部转换为大写。              lc,\L可以将变量中的字母全部转换为小写。              $big = "\U$var";       $big = uc($var);  

0评论2023-02-09685

Perl多线程(2):数据共享和线程安全 多线程epoll
线程数据共享在介绍Perl解释器线程的时候一直强调,Perl解释器线程在被创建出来的时候,将从父线程中拷贝数据到子线程中,使得数据是线程私有的,并且数据是线程隔离的。如果真的想要在线程间共享数据,需要显式使用threads::shared模块来扩展threads模块的功

0评论2023-02-09683

Linux下安装与使用本地的perl模块 centos安装perl
在使用Linux或是unix时,perl是一个非常有用的脚本的语言。关于perl的模块安装,网上也有很多介绍,一方面可以通过不同套件自带的软件安装工具安装,一方面可以通过cpan安装,再者就是可以直接编译源代码。 这样,对于拥有root权限的用户来说,没有任何问题

0评论2023-02-09497

Perl_Tkx_Canvas绘图功能函数介绍
1.画画布:     $canvas = $mw-new_tk__canvas;2.画线:         $canvas-create_line(10,10,200,50,-fill=”red”,-width=3);配置item参数:       $canvas-itemconfigure($id, -fill = "blue", -width = 2);3.画椭圆         “ova

0评论2023-02-09658

perl: warning: Falling back to the standard locale ("C").
/********************************************************************************** *perl: warning: Falling back to the standard locale ("C"). * 说明: * 使用debootstrap的时候,遇到这个问题,记录解决方法。 **2017-2-18 深圳 南山平山村 曾剑锋

0评论2023-02-09574

Perl操作Mysql数据库 perl操作excel
一. 安装DBI模块步骤1:从TOOLS栏目中下载DBI.zip,下载完后用winzip解开到一个temp目录,共有三个文件:ReadmeDBI.ppdDBI.tar.gz步骤2: 在DOS窗口下,temp目录中运行下面的DOS命令:ppm install DBI.ppd 如果提示无效命令,可在perl/bin目录下运行 二. 安装DBD

0评论2023-02-09348

更多推荐