写给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');


目录
相关文章
|
2月前
|
安全 Java API
Java Web 在线商城项目最新技术实操指南帮助开发者高效完成商城项目开发
本项目基于Spring Boot 3.2与Vue 3构建现代化在线商城,涵盖技术选型、核心功能实现、安全控制与容器化部署,助开发者掌握最新Java Web全栈开发实践。
340 1
|
2月前
|
人工智能 Java 开发者
阿里出手!Java 开发者狂喜!开源 AI Agent 框架 JManus 来了,初次见面就心动~
JManus是阿里开源的Java版OpenManus,基于Spring AI Alibaba框架,助力Java开发者便捷应用AI技术。支持多Agent框架、网页配置、MCP协议及PLAN-ACT模式,可集成多模型,适配阿里云百炼平台与本地ollama。提供Docker与源码部署方式,具备无限上下文处理能力,适用于复杂AI场景。当前仍在完善模型配置等功能,欢迎参与开源共建。
1347 58
阿里出手!Java 开发者狂喜!开源 AI Agent 框架 JManus 来了,初次见面就心动~
|
2月前
|
缓存 Java 开发者
Java 开发者必看!ArrayList 和 LinkedList 的性能厮杀:选错一次,代码慢成蜗牛
本文深入解析了 Java 中 ArrayList 和 LinkedList 的性能差异,揭示了它们在不同操作下的表现。通过对比随机访问、插入、删除等操作的效率,指出 ArrayList 在多数场景下更高效,而 LinkedList 仅在特定情况下表现优异。文章强调选择合适容器对程序性能的重要性,并提供了实用的选择法则。
171 3
|
3月前
|
Java 测试技术 API
2025 年 Java 开发者必知的最新技术实操指南全览
本指南涵盖Java 21+核心实操,详解虚拟线程、Spring Boot 3.3+GraalVM、Jakarta EE 10+MicroProfile 6微服务开发,并提供现代Java开发最佳实践,助力开发者高效构建高性能应用。
595 4
|
6月前
|
人工智能 Java 程序员
JManus - 面向 Java 开发者的开源通用智能体
JManus 是一个以 Java 为核心、完全开源的 OpenManus 实现,隶属于 Spring AI Alibaba 项目。它旨在让 Java 程序员更便捷地使用 AI 技术,支持多 Agent 框架、网页配置 Agent、MCP 协议和 PLAN-ACT 模式。项目在 GitHub 上已获近 3k star,可集成多个大模型如 Claude 3.5 和 Qwen3。开发者可通过 IDE 或 Maven 快速运行项目,体验智能问答与工具调用功能。欢迎参与开源共建,推动通用 AI Agent 框架发展。
10009 65
|
5月前
|
SQL 人工智能 Java
阿里云百炼开源面向 Java 开发者的 NL2SQL 智能体框架
Spring-ai-alibaba-nl2sql 是析言 GBI 产品在数据问答领域的一次重要开源尝试,专注于 NL2SQL 场景下的核心能力开放。
1607 48
|
3月前
|
人工智能 自然语言处理 Java
面向 Java 开发者:2024 最新技术栈下 Java 与 AI/ML 融合的实操详尽指南
Java与AI/ML融合实践指南:2024技术栈实战 本文提供了Java与AI/ML融合的实操指南,基于2024年最新技术栈(Java 21、DJL 0.27.0、Spring Boot 3.2等)。主要内容包括: 环境配置:详细说明Java 21、Maven依赖和核心技术组件的安装步骤 图像分类服务:通过Spring Boot集成ResNet-50模型,实现REST接口图像分类功能 智能问答系统:展示基于RAG架构的文档处理与向量检索实现 性能优化:利用虚拟线程、GraalVM等新技术提升AI服务性能 文
358 0
|
SQL Java 数据库连接
为何JDBC是Java开发者的“心头好”?原因竟然这么简单!
为何JDBC是Java开发者的“心头好”?原因竟然这么简单!
120 3
|
安全 Java API
告别繁琐编码,拥抱Java 8新特性:Stream API与Optional类助你高效编程,成就卓越开发者!
【8月更文挑战第29天】Java 8为开发者引入了多项新特性,其中Stream API和Optional类尤其值得关注。Stream API对集合操作进行了高级抽象,支持声明式的数据处理,避免了显式循环代码的编写;而Optional类则作为非空值的容器,有效减少了空指针异常的风险。通过几个实战示例,我们展示了如何利用Stream API进行过滤与转换操作,以及如何借助Optional类安全地处理可能为null的数据,从而使代码更加简洁和健壮。
405 0