16

我将花 30 分钟向有经验的程序员教授 Perl。学习 Perl 的最好方法是编写代码。除了 CPAN,你会向程序员展示什么,以便他们了解 Perl 的表达能力、CPAN 提供的大量功能,同时保持一切干净整洁,以便他们对语言感到满意?我会把棘手的东西留到另一天。

使用警告;
使用严格;
# 使用 A_CPAN_LIB;

子示例_func1 {
  # 使用 CPAN 库或演示 Perl 的一些基本特性
}
example_func1();
# ...
__结尾__


这就是我想出的...

从哪儿开始

信不信由你,手册页。好的,我们将只使用 perldoc 来对 Windows 友好。

perldoc 页面(或 Unix/Mac 上的手册页)非常适合 Perl。您可以键入 man perl 或 perldoc perl

perldoc perl ; # 展示一个概览和几十个教程;man perl 也是一样。

perldoc perlintro ; # 给初学者的 Perl 介绍;man perlintro
perldoc perlrequick ; # Perl 正则表达式教程示例

perldoc perlfunc ; # 显示 Perl 内置函数
perldoc perlre ; # 更多 Perl 正则表达式。

CPAN

Perl 库站点 CPAN 上有数千个库。
perl -MCPAN -e '安装日期时间'

perldoc 也适用于已安装的模块:perldoc module

perldoc DateTime
perldoc DBI ; # 数据库 API。如果这不起作用,请安装它:
         perl -MCPAN -e 'install DBI'

推荐模块

perl -MCPAN -e '安装 Moose' ; # Perl 做 OOP
perldoc Moose ; # 告诉我更多关于 Moose
perl -MCPAN -e 'install CGI' ; # 快速而肮脏的网页
perl -MCPAN -e 'install Catalyst' ; # 大型网络框架。有时安装有问题。谷歌是你的朋友
perl -MCPAN -e 'install CGI::Application' ; # 另一个 web 框架
perldoc CGI::Application ; # 快速查看文档

A little Q&A。

问:为什么我应该使用 Perl 而不是 Ruby 或 Python?
A:越来越多的人使用 Perl。Perl 有更多的库(方式更多)。Perl 是一种非常棒的 GTD 语言。

问:为什么人们讨厌 Perl?
A:你可以用它做一些丑陋的事情。记住使用警告;使用严格;在您的所有代码中。您可以在运行之前检查您的代码。 perl -c hello.pl


Perl 主题

将 Perl 与数据库一起使用

http://www.perl.com/pub/a/1999/10/DBI.html

使用 Perl 进行 Web 开发

http://www.catalystframework.org

面向对象的 Perl

http://www.iinteractive.com/moose

Perl 1-Liners

http://www.perlmonks.org/?node_id=470397
http://sial.org/howto/perl/one-liner

其他教程

http://perlmonks.org/index.pl?node=Tutorials

图书

有几十个。
http://www.amazon.com/s/ref=nb_ss_gw?url=search-alias%3Dstripbooks&field-keywords=perl&x=0&y=0

网站

Perlmonks
Perl.org
Pleac
StackOverFlow's Hidden Features of Perl
CPAN FAQ
Randall Schwartz 的文章


获得帮助

Perl Nabble 论坛
IRC 频道:freenode、irc.perl.org。有几个:

irc://irc.perl.org/perl
irc://irc.perl.org/catalyst
irc://irc.freenode.net/modperl
irc://irc.perl.org/perl6

4

11 回答 11

35

我们为此写了一整本书,名为《Learning Perl 》 。查看目录。

这本书是自 1995 年以来教人们 Perl 的产品。它不适合任何特定的应用程序,而是向人们展示了他们将用于 80% 的 Perl 编程的 Perl 部分。我们为 Perl 5.10 更新了它,并包含了关于使用 CPAN 的部分。

祝你好运, :)

于 2008-11-26T12:33:19.877 回答
13

Perl 有两件事即使对有经验的程序员来说也可能是陌生的,所以也许应该尽早提到这些东西,以免他们尖叫着跑掉。

上下文:Perl 中几乎每个函数都有两种行为。当在“标量上下文”中调用时,它会做一件事,当在“列表上下文”中调用时,它会做其他事情。这可能看起来很奇怪和奇怪(在机器语言中确实如此),但这只是应用于编程语言的“单数”和“复数”的自然语言概念。

变量:Perl 有 2 个完全不同且独立的变量系统。词法变量(my)和包变量(our)。如果您使用过大多数编程语言,那么词法变量是“正常的”。包变量(即动态变量)很奇怪,除非你使用过类似 Lisp 的东西。“总是喜欢词法变量而不是包变量,除非你不能。”

于 2008-11-27T05:44:57.343 回答
6

绝对向他们展示在 Perl 中使用正则表达式是多么容易。

于 2008-11-26T06:31:27.330 回答
4

这基本上是一个面向任务的问题。

如果他们要使用它进行解析,请向他们展示操作 STDIN 和文件 i/o 是多么容易。

如果他们打算将它用于数据库,向他们展示如何从查询结果中获取 hashrefs,这会让他们惊叹不已。

Perl 通常有一些方法可以让几乎任何任务都变得超级快速。选择他们需要做的任务。

但绝对教他们使用我的和本地的。强调我的重要性,这将使他们的经历更快乐。

于 2008-11-26T06:56:12.693 回答
3

不管是不是有经验的程序员,30 分钟你都不能假装教任何东西,更不用说 Perl。最多你可以尝试用一些很酷的单行代码来启发他(提供他们完全臃肿的 Java 对应物,以供比较)。

于 2008-11-26T07:48:22.040 回答
3

我会先介绍列表和哈希。(请记住,病态的折衷垃圾列表。)向他展示 foreach 比 C 风格的 for 更漂亮。

如果他来自 C/C++,最好将他推荐给http://perldoc.perl.org/perltrap.html或“perldoc perltrap”。它包含需要注意的最明显的差异。

于 2008-11-26T13:43:47.863 回答
3

只是我的 2c,但关于 CPAN,您如何向他们提出将英文文本分成句子的问题?

起初,这似乎很简单:一个句子是一个以句号结尾的字符串。

但是经过片刻的思考,程序员会发现出现了各种各样的复杂性。如果有小数或缩写,句点可以在中间;句子可以以其他东西结尾,例如“?”,“!” 或者 ”...”; “句号后跟一个空格”也无济于事,因为 EOF 呢?

长话短说,当谈到 Perl 时,其他人已经想到了该列表中的所有内容,甚至更多。所以你使用Lingua::EN::Sentence

于 2008-11-28T03:55:09.810 回答
2

如果他是一位经验丰富的程序员,他可能会喜欢Smart CommentsPOD闭包-d:DProfswitch 和dprofpp、one-liners、Perl CriticMoose__DATA__map。(这确实是一种疯狂的组合。)我会从一开始就向他解释 Perl 是一种具有很多魔力的语言,但他可以自由选择何时坚持使用简单的代码以及何时使用魔杖。有经验的程序员不怕选择:-)

于 2008-11-26T07:11:45.953 回答
2

我突然想到的想法是让他们将信息从一种格式传输到另一种格式。例如,获取xml数据并将其传输到JSON,以便在网页上使用。

cpan JSON XML::简单
use strict;
use warnings;

use JSON;
use XML::Simple;

my $data;
{
  open( my $file, '<', 'filename.xml' ) or die;
  $data = XMLin($file);
  close $file;
}
{
  open( my $file, '>', 'filename.json' ) or die;
  print $file to_json( $data );
  close $file;
}
于 2008-11-26T18:13:47.943 回答
1

我同意其他一些评论者的观点,即这确实取决于 Perl 所用于的任务类型。此人是 Windows 系统管理员吗?然后我将介绍使用 Perl 的 WMI(scriptomatic 将是一个很好的资源)。

我会拿一份 Oreilley 的“Perl Cookbook”,并从中找到一些有趣的话题。这是本书的链接:link text

在 Perl 中我最喜欢的事情之一是比较列表、查找唯一列表中的联合、交集或差异是多么容易(Perl Cookbook 中的食谱 4.9)。帮助您了解 Perl 的强大功能。

于 2008-11-26T16:02:32.310 回答
1

这取决于这个“经验丰富的程序员”所经历的编程类型。

如果他们做过很多 shell 编程,他们可能会对 Perl 的超级 awk 个性印象深刻——通过使用正则表达式和模板进行一些实际的提取和报告。

如果他们更像是喜欢使用复杂数据结构的 C 程序员,请向他们展示您可以多么轻松地生成散列哈希,以及生成的代码执行速度有多快。

... 等等。

于 2008-11-26T16:19:42.960 回答