写给Java开发者的10分钟Perl指南

简介:  《写给Java开发者的10分钟Perl指南》  原文见:http://www.programcreek.com/2012/09/10-minutes-perl-tutorial-for-java-developer/  本文并非Java语言和Perl语言的比较文,而是为Java程序员写的快速Perl入门。

 《写给Java开发者的10分钟Perl指南》

 原文见:http://www.programcreek.com/2012/09/10-minutes-perl-tutorial-for-java-developer/

 本文并非Java语言和Perl语言的比较文,而是为Java程序员写的快速Perl入门。下面介绍一些要点。

1、基础

与Java不同,Perl中没有main方法这样的入口点,要运行下面的Perl程序,比如:


# comment starts with "#"
# the name is hello.pl
print "Hello Perl!";
只需执行:
perl hello.pl

2、日期类型

Perl语言中的日期类型非常简单,只有3种类型:Scalar、Array和Hash。

Scalar类型即标量,是单个的值,它基本上是除了Array和Hash类型的所有一切。
Array类型是一个数组,可以包含不同类型的元素,比如它可以同时包含整数元素和字符串元素的数组。
Hash类型与Java语言的HashMap类相似。

下面的代码显示了它们的用法:


#claim a hash and assign some values
my %aHash;
$aHash{'a'}=0;
$aHash{'b'}=1;
$aHash{'c'}=2;
$aHash{'d'}=3;
$aHash{'e'}=4;
 
#put all keys to an array
my @anArray = keys (%aHash);
 
#loop array and output each scalar
foreach my $aScalar (@anArray){
	print $aScalar."\n";
}
执行输出:
e
c
a
b
d
如果想对数组排序,可以简单的使用sort函数,如下:
foreach my $aScalar (sort @anArray){
	print $aScalar."\n";
}

3、条件语句和循环语句

Perl语言的条件语句和循环语句有if、while、for、foreach等关键字,它们和Java语法中的对应关键字很相似。

下面的例子说明了这一点:


#if
my $condition = 0;
if( $condition == 0){
	print "=0\n";
}elsif($condition == 1){
	print "=1\n";
}else{
	print "others\n";
}
 
 
#while
while($condition 

4、文件读/写

下面的例子说明了如何从文件中读取内容,以及如何向文件写入内容。

要注意“>”和“>>”的不同,前者是创建新文件,后者是向文件添加内容。


#read from a file
my $file = "input.txt";
open(my $fh, " ) {
	#chomp so no new line character
	chomp($aline);
	print $aline;
}
close $fh;
 
# write to a file
my $output = "output.txt";
open (my $fhOutput, ">", $output) or die("Error: Cannot open $output file!");
print $fhOutput "something";
close $fhOutput;

5、正则表达式

要使用正则表达式,主要会用到2个函数:m和s。

下面的代码讲述了用正则表达式匹配字符串$str:


$str =~ m/program(creek|river)/
假设字符串$str的值为“programcreek”,上面的表达式返回true,可用作条件表达式或循环的条件。

6、值传递或引用传递

Perl程序中无需定义方法或函数,但是呢,定义方法或函数可以改进代码的质量,提高代码的重用性。因此,我们需要关心参数传递。
可以直接传递标量Scalar,但是当涉及到数组或Hash时,需引起注意。


my @testArray = (1, 3, 2);
 
#In sub
sub processArrayByReference($) {
	my $arrayref = shift;
	my @array    = @$arrayref;
	#...
}
 
#In sub processarray:
sub processArrayByValue($){
	my @array = @_;
	#...
}
 
processArrayByValue(@testArray);
 
processArrayByReference( \@testArray );
Hash

sub printHash($) {
	my %hash = %{ shift() };
	for my $key ( sort keys %hash ) {
		my $value = $hash{$key};
		print "$key => $value\n";
	}
}
 
printHash(\%twoLettersCount);

7、小技巧

1)通过字符串的每个字符进行循环


my @lineCharArray = split('',$aline);
 
foreach my $character (@lineCharArray){
	print $character."\n";
}

2)创建一个包含26个字母的数组


my @charArray = ('a'..'z' );
my @twoCharArray = ('aa'..'zz');


目录
相关文章
|
17天前
|
Java C# 开发者
【干货】Java开发者快速上手.NET指南
【干货】Java开发者快速上手.NET指南
|
2月前
|
缓存 安全 Java
JDK 14全景透视:每个Java开发者必知的新特性
JDK 14全景透视:每个Java开发者必知的新特性
51 0
|
2月前
|
数据采集 编解码 Java
解锁Hutool魔法箱:Java开发者不可错过的神奇工具集
解锁Hutool魔法箱:Java开发者不可错过的神奇工具集
62 0
|
2月前
|
缓存 监控 Java
线程池的魔法:Java 开发者必备的并发工具
线程池的魔法:Java 开发者必备的并发工具
47 0
|
3月前
|
SQL 网络协议 Java
Java开发者的必备技能:抓包工具排查问题
Java开发者的必备技能:抓包工具排查问题
|
9天前
|
Oracle Java 关系型数据库
Java 开发者必备:JDK 版本详解与选择策略(含安装与验证)
Oracle Java SE 支持路线图显示,JDK 8(LTS)支持至2030年,非LTS版本如9-11每6个月发布且支持有限。JDK 11(LTS)支持至2032年,而JDK 17及以上版本现在提供免费商用许可。LTS版本提供长达8年的支持,每2年发布一次。Oracle JDK与OpenJDK有多个社区和公司构建版本,如Adoptium、Amazon Corretto和Azul Zulu,它们在许可证、商业支持和更新方面有所不同。个人选择JDK时,可考虑稳定性、LTS、第三方兼容性和提供商支持。
24 0
|
5月前
|
JavaScript Java Android开发
关于Java的未来探讨,看看国外开发者怎么说的
总之,我觉得 Java 在未来会被替代的可能性很小,但也不能掉以轻心,在后端开发领域,Go 已经在逐步蚕食 Java 得份额,今年非常火得 ai 模型领域相关,大部分代码也是基于 Python 编写。Java 需要在保持优势领域地位后持续地创新和改进。
51 1
|
2月前
|
Java 编译器 测试技术
滚雪球学Java(07):自动装箱、自动拆箱,Java开发者必备技能
【2月更文挑战第8天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,助你一臂之力,带你早日登顶🚀,欢迎大家关注&&收藏!持续更新中,up!up!up!!
74 5
|
2月前
|
存储 缓存 安全
Guava:Java开发者的全方位工具库
Guava:Java开发者的全方位工具库
71 0
|
2月前
|
安全 IDE Java
终结空指针异常:Java开发者的生存指南
终结空指针异常:Java开发者的生存指南
60 1