使用Perl

Posted 吕田论坛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Perl相关的知识,希望对你有一定的参考价值。

如果你学习Perl的话,你作为一个系统管理员的技能将得到不可估量的提高 - 甚至只是一个关于它的知识。

什么是Perl

Perl是可用于系统管理的通用语言。实际上,它是由Larry Wall专门为此目的而创建的。我们以前见过的其他许多单独程序的例子都可以单独使用Perl来完成。本节并不是要详细解释如何使用Perl,也不应该被认为是Perl语言的教程。在使用Perl之前,您应该通过键入以下内容熟悉它:

码:

perldoc perlintro

这将给你一个基本的教程。Perl几乎安装在所有标准的Linux发行版上,所以perldoc应该可用。

如果你使用perl进行系统管理,你会发现自己在管理员中使用了很多短perl表达式作为单行程序。这里有一些你可能想要学习,改变和适应,然后再使用的单行程式。

以下将打印一个文件的特定行,就像更多,更少或猫。

码:

perl -ne 'print if 1 .. 5' our_file

我们也可以选择不打印行:

码:

perl -ne 'print unless 1 .. 5' our_file

除非选项意味着不打印第1行到第5行。

使用perl单行程序的最好方法之一是作为sed的替代。下面是我们如何使用像sed这样的Perl的一个例子:

码:

perl -p -i.bkp -e 's/SCO/Satan/' SCO_news

在这里,我们在文件SCO_news中用单词“撒旦”代替了单词SCO,而且我们创建了一个备份文件。这是一个好主意,因为如果我们没有使用-i.bkp选项,我们将永远覆盖SCO_news文件。

我们也可以像awk一样使用Perl。这是一个例子

码:

ls -l | perl -lane 'print $F[+8]'

这将打印出文件的名称。这不是特别有用,因为我们可以通过键入ls -1来轻松完成这一操作。但是,如果我们添加一点点,它变得非常有用。

码:

ls -l|perl -lane 'print join " ",@F[5..8]'

这将打印出文件创建或上次修改的月份,年份和小时以及文件名。

这是另一个你可能会觉得有用的。如果你知道某人是个大写字母,他们可能会用大写字母命名他们的所有文件。这是一种使用perl将文件重命名为小写名称的方法。

码:

perl -e 'for (@ARGV) { rename , lc() ; }' *

该特定目录中的所有文件(*)将被重命名为小写的等价物。

如果你碰巧和我一样,而且你觉得你不必用花里胡哨的文字处理器写出你的想法,下面的这一行就可以派上用场了。我使用的拼写检查器,ispell,不会偶尔大写字母,应该是小写。当涉及到一个人的头衔时,我通常会搞得一团糟,一般地谈论他/她。(例如,克林顿总统或克林顿总统在1999年)这将打印文件中所有以首都开头的单词。如果你已经大写了一些不应该的东西,那么你可以改正。

码:

perl -ne 'push@w,/(b[A-Z]S*?b)/g;END{print"@w"}'

码:

perl -ne 'print "$1n" if /sto=<([^>]+)>.*?relay=(?!local,)/' /var/log/mail.log

码:

cat /proc/net/tcp |perl -lane '(undef,)=split ":",; print hex()."t".getpwuid() if '|sort -n|uniq -c

这非常重要。应该关闭不需要的端口。任何开放的端口都是不必要的入口的潜在来源。在这里,我们已经将我们的TCP端口读取到Perl,然后,正如我们前面看到的,我们对它们进行排序,并用uniq过滤掉任何重复的条目。

我们之前的一些例子是关于Apache Web服务器访问日志的。那么,这个团队还有另外一个。这是一个简单的单线程,从我们网站的访问次数最多到最少,为我们提供了“点击次数”。

码:

cat access | perl -ne 'print "$1n" if /GET (.*?) HTTP/'|sort|uniq -c|sort -nr|less

尽管不打算将其用于Web项目和其他编程工作,但在Perl中涉足一点也不失为一个好主意。您可以在perl站点获得更多信息:http//www.perl.org/

关注吕田论坛获取更多资讯


点击原文进行查阅吕田博客之旅


以上是关于使用Perl的主要内容,如果未能解决你的问题,请参考以下文章

带有动态值的write_rich_string(Perl)

Perl 5.20.0 发布

Perl CGI 日期和时间选择器,自动填充当前日期和时间

在 perl 中使用 XPath 读取 Mac Plist 布尔值

发布片段(Smultron的附加组件)

hash 在 perl 中的用法(转载)