我应该教一个初学Perl程序员?

时间:2008-11-26 06:23:51

标签: perl cpan

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

use warnings;
use strict;
# use A_CPAN_LIB;

sub example_func1 {
  # use the CPAN lib or demonstrate some basic feature of Perl
}
example_func1();
# ...
__END__

<小时/> 这就是我想出来的......

从哪里开始

信不信由你的男人页。好的,我们只是使用perldoc代替Windows友好。

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

perldoc perl ; #显示概述和几十个教程;男人perl是一样的。

perldoc perlintro ; #初学者的Perl介绍;男人perlintro
perldoc perlrequick ; #Perl正则表达式tutoral的一个例子

perldoc perlfunc ; #显示内置Perl功能
perldoc perlre ; #更多Perl正则表达。

CPAN

Perl库网站CPAN上有数千个库 perl -MCPAN -e'安装DateTime'

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

perldoc DateTime
perldoc DBI ; #Database API。如果这不起作用则安装它:
  perl -MCPAN -e'安装DBI'

推荐模块

perl -MCPAN -e'安装驼鹿'; #Perl执行OOP
perldoc Moose ; #告诉我有关Moose的更多信息 perl -MCPAN -e'安装CGI'; #快速和脏的网页
perl -MCPAN -e'安装Catalyst'; #大网页框架。有时安装有问题。谷歌是你的朋友 perl -MCPAN -e'安装CGI :: Application'; #另一个Web框架
perldoc CGI ::应用程序; #快速浏览一下文档
一点Q&amp; A
问:为什么我应该使用Perl而不是Ruby或Python? 答:更多人使用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

OO 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's articles


获得帮助

Perl Nabble Forum
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

11 个答案:

答案 0 :(得分:35)

我们写了一本关于Learning Perl的书。查看目录。

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

祝你好运,:))

答案 1 :(得分:13)

Perl有两件事情,即使对于有经验的程序员来说也可能是外国的,所以应该尽早提及这些内容,这样他们就不会尖叫起来。

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

变量:Perl有两个完全不同且独立的变量系统。词法变量(my)和包变量(我们的)。如果您使用了大多数编程语言,则词汇变量是“正常的”。包变量(即动态变量)很奇怪,除非你使用像Lisp这样的东西。 “总是更喜欢词汇变量而不是包变量,除非你不能。”

答案 2 :(得分:6)

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

答案 3 :(得分:4)

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

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

如果他们要将它用于数据库,请向他们展示如何从查询结果中获取hashrefs,这应该让他们惊叹。

Perl通常可以通过某种方式快速完成任何任务。挑出他们需要做的任务。

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

答案 4 :(得分:3)

有经验的程序员与否,在30分钟内你不能假装任何东西,更不用说Perl了。最多你可以试着用一些很酷的单行开发他们(提供他们全面的Java对应物,作为比较)。

答案 5 :(得分:3)

我先覆盖列表和哈希。 (病态的Eclectlic Rubbish Lister,请记住。)告诉他有多漂亮的foreach比C风格更好。

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

答案 6 :(得分:3)

只是我的2c,但就CPAN而言,你如何将英文文本分成句子呢?

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

但经过一段时间的思考,程序员会发现会出现各种复杂情况。如果有十进制数字或缩写,则句点可以在中间;句子可以以其他东西结束,例如“?”,“!”要么 ”...”; “一段时间后跟一个空间”也无济于事,因为EOF呢?

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

答案 7 :(得分:2)

如果他是一名经验丰富的程序员,他可能会感谢Smart CommentsPODclosures-d:DProf切换和dprofpp,单行,{{ 3}},Perl Critic__DATA__Moose。 (这确实是一个疯狂的组合。)我从一开始就向他解释Perl是一种具有很多魔力的语言,但他可以自由选择何时坚持使用简单的代码以及何时绘制魔杖。经验丰富的程序员不怕选择: - )

答案 8 :(得分:2)

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

cpan JSON XML::Simple
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;
}

答案 9 :(得分:1)

我同意其他一些评论者的说法,它真正取决于Perl正在使用的任务类型。这个人是Windows系统管理员吗?然后我将介绍使用Perl的WMI(scriptomatic在这里将是一个很好的资源)。

我会抓一份Oreilley的“Perl Cookbook”,并找到一些有趣的话题。以下是此书的链接:link text

Perl最喜欢的一件事是比较列表,查找联合,交叉点或独特列表中的差异(Perl Cookbook中的食谱4.9)是多么容易。帮助您体会Perl的力量。

答案 10 :(得分:1)

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

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

如果他们更喜欢喜欢使用复杂数据结构的C程序员,请向他们展示如何轻松地创建哈希散列,以及生成代码执行的速度。

......等等。