Perl CGI编程学习笔记

什么是CGI?

CGI (Common Gateway Interface) 是一种在服务器上运行的标准协议,用于在 Web 应用程序中执行脚本。CGI 脚本可以运行在任何支持 CGI 协议的 Web 服务器上。

使用Perl编写CGI脚本

Perl 是一种非常强大的编程语言,被广泛应用于 Web 开发。它特别适合用于编写 CGI 脚本。下面是一个简单的例子:

perlCopy Code
#!/usr/bin/perl use strict; use warnings; print "Content-type: text/html\n\n"; print "<html><head><title>CGI Example</title></head><body>"; print "<h1>Hello, world!</h1>"; print "</body></html>";

上述代码创建一个简单的 Web 页面,输出 "Hello, world!"。我们可以将这个脚本保存为 hello.pl 文件,并且确保该文件有可执行权限(如 chmod +x hello.pl)。

传递参数

在 CGI 脚本中,可以通过查询字符串或 POST 数据来传递参数。例如,以下是一个接收表单数据并输出结果的 CGI 脚本:

perlCopy Code
#!/usr/bin/perl use strict; use warnings; use CGI; my $query = CGI->new; my $name = $query->param("name"); print $query->header(-type=>'text/html', -charset=>'UTF-8'); print "<html><head><title>Greetings</title></head><body>"; print "<h1>Hello, $name!</h1>"; print "</body></html>";

上述脚本从表单数据中获取 name 参数,并将其输出到 Web 页面中。

文件上传

在 CGI 中,也可以通过表单实现文件上传。以下是一个接收文件并将其保存到服务器上的示例脚本:

perlCopy Code
#!/usr/bin/perl use strict; use warnings; use CGI; my $query = CGI->new; my $filehandle = $query->upload("file"); my $filename = $query->param("filename") || "upload.txt"; my $filepath = "/var/www/uploads/$filename"; open(my $fh, '>', $filepath) or die "Can't open file: $!"; while (my $chunk = <$filehandle>) { print $fh $chunk; } close($fh); print $query->header(-type=>'text/html', -charset=>'UTF-8'); print "<html><head><title>File Uploaded</title></head><body>"; print "<h1>File uploaded successfully!</h1>"; print "</body></html>";

上述脚本可以将上传文件保存在服务器上,文件名为表单中的 filename 参数。

总结

Perl 是一种非常适合用于编写 CGI 脚本的语言。在本文中,我们介绍了 CGI 的基本概念和使用 Perl 编写 CGI 脚本的方法。我们还演示了如何传递参数和处理文件上传。希望这些笔记可以帮助你学习 Perl CGI 编程。