个人理财 调入十个简短有用的Perl程序 - 傻瓜

调入十个简短有用的Perl程序 - 傻瓜

目录:

Anonim

有些人认为短程序不是很好,但Perl不是这样。只是几行Perl代码可以走很长的路。本文列出了一些方便的小巧Perl程序。

收集独特的行

如果你的文本文件有许多行是重复的,而你只想看到独特的行,你可以将它们收集到一个数组中(在这种情况下,它被称为@Unique),下面的程序:

<! - 1 - >

打开(IN,“somefile。txt”); @独特=();

while(){unless($ i {$ _} ++){push(@Unique,$ _)}}

这里的技巧是$ i {$ _} ++第一次返回0你用$ _作为键创建一个键值对,然后再创建一个非零值。

删除多个空行

某些文本文件有多个连续的空行,这使得它们难以阅读,特别是在小屏幕上。以下程序将打印一个文本文件,将两个或多个空白行的所有实例压缩到一个空白行中。

<! - 2 - >

注意: 一个空白行可以有空白字符,比如空格和制表符,但是没有可显示的字符。

打开(IN,“somefile。txt”); $ PrevBlank = 0; while(){

if(/ S / or!$ PrevBlank){print $ _}

$ PrevBlank = / ^ s * $ /

}

如果行中有非空白字符,或者前一行不是空白,则前面示例中的if语句为真。 $ PrevBlank赋值告诉你当前行是否为空,意味着它有零个或多个空白字符,而没有其他的字符。

按排序顺序从文件中打印行

很容易忘记Perl的排序功能是多么有用。下面的程序将整个文件读入数组,对数组进行排序,然后打印结果。简短而又甜美,而且非常高效:

打开(IN,“somefile。txt”);

print sort();

从一个文件打印一系列的行

你是否曾经想从文件中只读几行,而不是所有的东西?以下程序只打印一系列的行。你用两个参数运行程序:你想要的范围和文件名。例如,如果您将程序命名为“showline”,并且想要查看somefile的第10至20行。 txt文件,您可以使用以下命令行:

showline 10-20 somefile。 txt

以下程序打印一系列行:

打开(IN,$ ARGV [1])或死“无法读取$文件。 N”;

($ Start,$ Stop)= split(/ - /,$ ARGV [0]); ($ i = 1; $ i <= $ stop; $ i + = 1)

{$ Line =;仅列出目录中的文件

有时,您可能希望忽略目录中的子目录,只关注文件。您可以使用以下-f文件测试来列出目录中的所有文件:

foreach $ f(){if(-f $ f){print“$ fn”}}

按大小列出目录

要排序,目录列表除了它的文件名之外的任何东西,程序必须保存列表中的名称和其他项目组成的记录列表。哈希对于这种使用键(文件名)和值(另一个目录信息)进行记录的列表很有用。以下程序会创建一个散列,列出目录中每个文件的大小,然后对这些项目进行排序以便输出。 (你可以很容易地修改这个程序来按日期而不是按大小进行排序。)

foreach $ f(){$ i {$ f} = -s $ f};

foreach $ k(sort {$ i {$ b} <=> $ i {$ a}} keys%i)

{printf“%8d%sn”,$ i {$ k},$ k }

按扩展名对目录进行排序

按文件名的一部分进行排序比按文件大小排序或按文件修改日期排序要困难得多。下面的程序将文件名分为两部分,然后按第二部分分类。如果您在UNIX或Macintosh系统上运行Perl,则该程序仅在文件名没有句点或句点的情况下才能工作:

foreach $ FullName(){

($ Name,$ Ext)= split( /。/,$ FullName,2); <@ push(@Temp,“$ Extt $ FullName”);

}

foreach $ Val(sort(@Temp)){

($ Ext,$ FullName)= split(/ t /,$ Val);

打印“$ FullNamen”;

}

创建一个简单的计算器

需要一个简单易用的计算器来剔除一些快速而肮脏的数学?下面的程序使用Perl的eval函数来输出你输入的任何等式的答案。要结束程序,输入一个空白行。这是用于创建自己的计算器的程序:

while(){

$ i = $ _;格格($ I);除非($ i){last}

$ o = eval($ i);打印“回答= $”;运行程序时,可以输入如下内容:

((2 ** 8)+(3 ** 8))

,得到如下结果:随机化列表

在Perl中,生成随机数很容易,但随机化数组的顺序并不那么简单。不过,你可以使用拼接函数从数组中拉出一个随机元素,然后将元素放入另一个数组中。以下程序随机化列表@MyList:

my @TempList =(); (@MyList)

{push(@TempList,splice(@MyList,rand(@MyList),1))}

@MyList = @TempList;

这里的技巧是rand(@MyList)从0到@MyList中的元素数量之间选择一个数字,splice将这个随机数字改为一个整数。

生成随机助记密码

试图说服计算机用户想出不容易被猜出的密码是系统管理员最具挑战性的工作之一。人们似乎总是坚持使用他们的生日或宠物的名字作为密码 - 违反安全就变成了孩子的游戏。

以下程序会生成随机密码。然而,这些密码不是一堆难以记忆的字母,而是有助于记忆的,因为它们出现在可以发音的辅音和元音对中。通过串起几个愚蠢的音节,您可以生成易于记忆的无意义的短语。

密码的每个音节可以代表100个数字中的任何一个;因此,一个四个字节的密码,如

votahubo,

是程序生成的1亿个(100到4个)密码之一。让系统管理员分配这些密码比让用户选择他们自己的,容易猜到的密码提供了更多的安全性:

print“输入种子编号:”; $ S =; srand($ s ^ time);

@ c = split(/ * /,“bcdfghjklmnprstvwxyz”);

@ v = split(/ * /,“aeiou”);对于($ i = 1; $ i <= 4; $ i + = 1)

{print $ c [int(rand(20))],$ v [int(rand(5))] }

这个程序的前两行初始化随机数的种子,接下来的两行创建包含20个辅音(减号

q

)和5个元音字母表的列表。 for循环只是打印四个音节。

调入十个简短有用的Perl程序 - 傻瓜

编辑的选择

在QuickBooks Online中使用批发帐单 - 虚拟

在QuickBooks Online中使用批发帐单 - 虚拟

QuickBooks Online为会计专业人员提供免费程序。您可以注册批发价格计划,也可以免费使用QBOA。如果你选择这样做(这是一个不错的选择!),你将需要知道如何管理的事情。从您的批发帐单订阅中删除客户有时候,事情并不是这样...

基于零基础的预算与QuickBooks 2012 - 傻瓜

基于零基础的预算与QuickBooks 2012 - 傻瓜

零基预算是一个非常有用和常用的预算策略在使用QuickBooks 2012之前,您应该先了解一下。基于零的预算与顶级预算相反。零基预算从下到上工作。零基预算始于个人收入,费用,资产,负债和所有者权益账户。它检查一个特定的...

在Sage Timeslips中10个有用的键盘快捷键 - 虚拟键盘

在Sage Timeslips中10个有用的键盘快捷键 - 虚拟键盘

键盘快捷键可以是Sage Timeslips 。启动或保存一张单据,将昨天,今天或明天的日期插入日期字段,并用一个或两个按键打开和关闭定时器。以下是十大最爱。按下它做什么Ctrl + N开始一个新的投票,而工作在...

编辑的选择

可以在Photoshop Elements 11中的任意形状图层上绘制多个图形 - 虚拟模型

可以在Photoshop Elements 11中的任意形状图层上绘制多个图形 - 虚拟模型

Photoshop Elements 11中创建的任何形状图层上的图形。您可以按照与选择相同的方式添加,减去,排除重叠和相交形状。请遵循以下步骤:创建第一个形状后,在工具选项:添加到形状区域中选择一个状态按钮:...

使用读卡器将图像下载到Mac上 - 傻瓜

使用读卡器将图像下载到Mac上 - 傻瓜

您的相机可能有一个USB端口,电缆,您可以使用下载您的图像。这种方法使用相机电池电力,也相当缓慢。如果您使用读卡器,则会更快地将图像存入计算机。如果您下载了大量的图像,请考虑购买FireWire读卡器; ...

在Photoshop Elements 10中创建形状图层后,在Photoshop Elements 10中绘制多个图形 - 虚拟形状

在Photoshop Elements 10中创建形状图层后,在Photoshop Elements 10中绘制多个图形 - 虚拟形状

可以在该图层上绘制其他形状。您可以按照与选择相同的方式添加,减去,重叠和相交形状。请记住,当您在元素中创建一个形状时,您正在创建一个基于矢量的元素。向量在数学上描述形状。 ...

编辑的选择

在您的IOS应用程序中添加模态视图 - 在iPhone和iPad上虚拟视图

在您的IOS应用程序中添加模态视图 - 在iPhone和iPad上虚拟视图

对于那些希望用户(或用户想要)在应用程序流之外执行某些操作的情况非常适用。而不是使用带有后退按钮的导航控制器,而是显示一个模式视图,其中的控件允许用户选择一个动作或...

Android应用程序开发:你的Twitter应用程序的文件 - 傻瓜

Android应用程序开发:你的Twitter应用程序的文件 - 傻瓜

,这个Android Studio项目包含大约100个文件和大约170个不同的文件夹。要制作Android Twitter应用程序,您需要专注于该项目的MainActivity。 java文件。但其他一些文件需要注意。 Twitter4J API jar文件Android没有内置的通信支持...