声明:本神奇的Perl系列为刘兴(http://deepfuture.iteye.com/)原创,未经笔者授权,任何人和机构不能转载
这段程序有几处耐人寻味:
1、($name,$price)=split(',',$carmes);
($name,$price)表示一个列表,列表可以理解为标量的有序集合,列表
存储着数据的集合,而数组可理解为存储着列表的变量。列表可用用(元素
1,元素 2,元素 3,„..,元素 n)的方式表示。这句代码完成一个功能把等
号右边分隔的每个元素赋值给左边的列表,其中第 1 个元素给$name,第二
个元素给$price。
2、chomp($price);
$price难道会包括换行符?这是初学者最容易忽视的问题:文件中每行只有2个元素,最后一个元素(也就是第二个元素)的末尾包括换行符。
3、foreach $carmes(<CAR>)
从CAR文件句柄中读取数据给$carmes变量,每循环一次读取一行,也可以如下书写:
@mytext=<CAR>;
foreach $carmes(@mytext){
……
}
4、say "$name:$price万" if $price<15 and $price>10;
想必大家对if语句并不陌生,这是if的一种特殊用法,此语句的含义表示:如果$price<15并且$price>10,则执行say "$name:$price万"语句。关于if,我们将在下一章详述。
8.写文件
Perl写文件的方式非常简洁,使用以下2种形式:
say 文件句柄 内容
print 文件句柄 内容
把Perl1-9的代码稍加修改,将10万到15万之间车写入另一个CSV格式文件中。
#perl1-10.pl
use 5.010;
open CAR,'<.\perl1-9.csv';
open CAROUT,'>.\perl1-10.txt';#以写入方式打开文件perl1-10.txt
foreach $carmes(<CAR>){
($name,$price)=split(',',$carmes);
chomp($price);
say CAROUT "$name:$price万" if $price<15 and $price>10;#写文件
}
close CAR;
9.带格式输出Sprintf和printf
Sprintf返回格式化后的字符串,语法如下:
sprintf(“格式”,要格式的字符串列表)
格式主要有以下几种:
%% 百分号
%c 把给定的数字转化为字符
%s 字符串
%d 带符号整数,十进制
%u 无符号整数,十进制
%o 无符号整数,八进制
%x 无符号整数,十六进制
%e 浮点数,科学计算法
%f 浮点数,用于固定十进制计数
%g 浮点数,包括%e和%f
printf等同于以下语句:
print sprintf(“格式”,要格式的字符串列表);
我们使用sprintf,以元为单位输出10万到15万的车的价格列表。
#perl1-11.pl
use 5.010;
open CAR,'<.\perl1-9.csv';
foreach $carmes(<CAR>){
($name,$price)=split(',',$carmes);
chomp($price);
say $name.':'.sprintf(“%d”,$price*10000) if $price<15 and $price>10;
# $price*10000完成将万元转换成元
}
close CAR;
10.join
split和join函数在处理文本时经常使用,join的功能与split相反,它将列表中用逗号分隔的字符串元素连接成单个字符串,并返回这个字符串,调用格式如下:
变量=join(分隔符,字符串元素列表);
我们将perl1-11.pl修改一下,从perl1-9.csv中提取价格在10万到12万之间的汽车,输出为另一个CSV格式文件。
#perl1-12.pl
use 5.010;
open CAR,'<.\perl1-9.csv';
open CAROUT,'>.\perl1-11.csv’;以写入方式打开文件perl1-11.csv
foreach $carmes(<CAR>){
($name,$price)=split(',',$carmes);
chomp($price);
say CAROUT join(‘,’,$name,sprintf(“%d”,$price*10000))
if $price<12 and $price>10;
# $price*10000完成将万元转换成元
}
close CAR;
close CAROUT;
注意下面这个语句:
say CAROUT join(‘,’,$name,sprintf(“%d”,$price*10000))
if $price<12 and $price>10;
因为csv格式每行元素之间以逗号分隔,所以使用逗号做为分隔符,将$name和格式转换后的$price连接为单个字符串输出到CAROUT文件句柄中。
11.转义字符表示
Perl的主要转义字符如下:
结 构 含 义
\n 换行
\r 回车
\t 水平置表符
\f 换页符
\b 退格
\v 垂直置表符
\a 响铃
\e Esc
\007 任一八进制ASCII值(这里007表示bell)
\x7f 任一十六进制ASCII值
\cC 任一“控制”字符
\\ 反斜杠
\" 双引号
\l 下一字母小写
\L 以后所有字母小写直到\E
\u 下一字母大写
\U 以后所有字母大写直到\E
\E 结束\L和\U
12.硬引用、指针
Perl没有像C语言一样的可直接操纵内存的指针,但有类似于指针的的引用(也称为硬引用)。引用是一种标量,含有其他类型数据的地址,可把它理解为一个内容为地址值的变量。
在perl里面使用“\”来创建引用;使用$解引用后,可使用引用指向的标量;使用@解引用,使用引用指向的数组;使用%解引用后,使用引用指向的哈希。这些使用方式具备修改权力,如:
#perl1-13.pl
$hello="hello";
$myhello=\$hello;
print "$myhello\n";#输出$hello地址
print "$$myhello\n";#输出$hello变量内容
$$myhello="hello!";#通过$myhello引用修改$hello变量的值
print "$hello\n";#输出$hello变量内容
输出结果如下:
SCALAR(0x182a6f4)
hello
hello!
这个程序中,$myhello存有$hello的地址,存有$hello变量的地址,通过$myhello能直接操作$hello,而不是操作$hello的复制版本。
符号引用(也称为软引用)操作符为$,相当于宏替换,如以下代码中, $$var相当于取$var的内容为变量名,完成宏替换,最终表示$name。
$var="name";
$$var="张三";
print "$name\n";
输出结果为
张三
13.完成第一个任务
这一章要结束了,输入输出基础介绍完了,能完成本章开始时提出的任务了,将Perl1-2.txt中的人员按城市分别存为几个文本文件,文件名是城市名。
#perl1-14.pl
use 5.010;
open PEOPLE,'<.\perl1-2.txt';
$mytext=<PEOPLE>;
@peoples=split('#', $mytext);
foreach $peoplemes(@peoples){
($name,$age,$city)= split(',',$peoplemes);
chomp($city);
open CITY,">>$city.txt";
say CITY join(',',$name,$age,$city);
close CITY;
}
close PEOPLE;
请大家注意这个语句:open CITY,">>$city.txt";
打开文件的方式使用的是增加方式。根据Perl的文件处理原则,>>表示在原有内容上增加。
分享到:
相关推荐
VB控制计算机并口示例(含完整可以运行源代码) 可以通过并口直接控制MCU,做SW控制不错,关键还可以学习并口硬件控制学习。含详细源代码哦
python毕业设计基于PyTorch的手语识别系统源码+数据集(完整项目代码),本资源中的源码都是经过本地编译过可运行的,评审分达到98分,资源项目的难度比较适中,内容都是经过助教老师审定过的能够满足学习、毕业设计、期末大作业和课程设计使用需求,如果有需要的话可以放心下载使用。 python毕业设计基于PyTorch的手语识别系统源码+数据集(完整项目代码)python毕业设计基于PyTorch的手语识别系统源码+数据集(完整项目代码)python毕业设计基于PyTorch的手语识别系统源码+数据集(完整项目代码)python毕业设计基于PyTorch的手语识别系统源码+数据集(完整项目代码)python毕业设计基于PyTorch的手语识别系统源码+数据集(完整项目代码)python毕业设计基于PyTorch的手语识别系统源码+数据集(完整项目代码)python毕业设计基于PyTorch的手语识别系统源码+数据集(完整项目代码)python毕业设计基于PyTorch的手语识别系统源码+数据集(完整项目代码)python毕业设计基于PyTorch的手语识别系统源码+数据集(完整项目代
基于Unet的树种分别识别模型
精选毕设项目-富文本解析,折线图,MD5,bluebird
《图书管理系统(基于ASP .NET)》是一款专为学习者设计的应用程序,旨在提供一个全面的图书管理平台。系统的设计采用ASP .NET技术,这是一款由微软开发的用于构建动态网站、web应用和web服务的强大工具。ASP .NET框架以其高效、安全和易于维护的特点,深受开发者的喜爱。 该系统包含了多个核心模块,这些模块覆盖了图书管理的主要功能。有图书录入模块,它允许管理员录入图书的基本信息,如书名、作者、出版社、ISBN号、分类等。图书查询模块提供给用户方便快捷的搜索功能,用户可以根据书名、作者、关键词等条件进行检索。此外,借阅与归还模块确保图书的流通管理,记录图书的借阅状态,提醒用户按时归还,并处理超期罚款等事务。 系统还具备用户管理模块,允许用户注册、登录、修改个人信息。对于权限管理,后台有专门的管理员角色,他们可以对用户进行操作,如分配权限、冻结或解冻账户。同时,系统的统计分析模块能够生成各类报表,如图书借阅量、热门书籍、用户活跃度等,这些数据对于图书馆运营决策有着重要参考价值。 在。内容来源于网络分享,如有侵权请联系我删除。另外如果没有积分的同学需要下载,请私信我。
精选毕设项目-查拼音
精选毕设项目-音乐在线歌词搜索
本专刊的主要目的是帮助初学者系统化和结构化地掌握会计知识。我们采用思维导图的形式,将复杂的会计概念和流程进行有效的简化,旨在让学习者能够更清晰地理解这些内容,并增强记忆效果。通过视觉化的方式,读者不仅能够感受到会计知识的关联性,还能轻松掌握关键点,提升学习效率。无论是在学习新知识还是复习旧知识时,这种方法都能够为学习者提供极大的便利和帮助。
配网两阶段鲁棒优化调度模型 关键词:两阶段鲁棒优化,CCG算法,储能 仿真算例采用33节点,采用matlab+yalmip+cplex编写,两阶段模型采用CCG算法求解。 模型中一阶段变量主要包括01变量和无功优化变量,核心变量主要存在于二阶段,因此在叠加二阶段变量优化过程中更容易得到最优解,所以有限次迭代即得到收敛的结果。 模型以网损为目标,包括功率平衡、网络潮流、电压电流、蓄电池出力以及无功设备出力等约束。 复现《两阶段鲁棒优化的主动配电网动态无功优化》-熊壮壮,具体内容可自行下载了解。
1..1行列式的定义.ppt
精选毕设项目-地图定位
MMC整流器平均值模型simulink仿真,19电平,采用交流电流内环,直流电压外环控制,双二阶广义积分器锁相环,PI解耦环流抑制器,调制方式为最近电平逼近调制,完美运行。 波形一二为直流侧电压电流,波形三四分别为主控制器及环流抑制器输出调制信号。
Spring Boot是Spring框架的一个模块,它简化了基于Spring应用程序的创建和部署过程。Spring Boot提供了快速启动Spring应用程序的能力,通过自动配置、微服务支持和独立运行的特性,使得开发者能够专注于业务逻辑,而不是配置细节。Spring Boot的核心思想是约定优于配置,它通过自动配置机制,根据项目中添加的依赖自动配置Spring应用。这大大减少了配置文件的编写,提高了开发效率。Spring Boot还支持嵌入式服务器,如Tomcat、Jetty和Undertow,使得开发者无需部署WAR文件到外部服务器即可运行Spring应用。 Java是一种广泛使用的高级编程语言,由Sun Microsystems公司(现为Oracle公司的一部分)在1995年首次发布。Java以其“编写一次,到处运行”(WORA)的特性而闻名,这一特性得益于Java虚拟机(JVM)的使用,它允许Java程序在任何安装了相应JVM的平台上运行,而无需重新编译。Java语言设计之初就是为了跨平台,同时具备面向对象、并发、安全和健壮性等特点。 Java语言广泛应用于企业级应用、移动应用、桌面应用、游戏开发、云计算和物联网等领域。它的语法结构清晰,易于学习和使用,同时提供了丰富的API库,支持多种编程范式,包括面向对象、命令式、函数式和并发编程。Java的强类型系统和自动内存管理减少了程序错误和内存泄漏的风险。随着Java的不断更新和发展,它已经成为一个成熟的生态系统,拥有庞大的开发者社区和持续的技术创新。Java 8引入了Lambda表达式,进一步简化了并发编程和函数式编程的实现。Java 9及以后的版本继续在模块化、性能和安全性方面进行改进,确保Java语言能够适应不断变化的技术需求和市场趋势。 MySQL是一个关系型数据库管理系统(RDBMS),它基于结构化查询语言(SQL)来管理和存储数据。MySQL由瑞典MySQL AB公司开发,并于2008年被Sun Microsystems收购,随后在2010年,Oracle公司收购了Sun Microsystems,从而获得了MySQL的所有权。MySQL以其高性能、可靠性和易用性而闻名,它提供了多种特性来满足不同规模应用程序的需求。作为一个开源解决方案,MySQL拥有一个活跃的社区,不断为其发展和改进做出贡献。它的多线程功能允许同时处理多个查询,而其优化器则可以高效地执行复杂的查询操作。 随着互联网和Web应用的快速发展,MySQL已成为许多开发者和公司的首选数据库之一。它的可扩展性和灵活性使其能够处理从小规模应用到大规模企业级应用的各种需求。通过各种存储引擎,MySQL能够适应不同的数据存储和检索需求,从而为用户提供了高度的定制性和性能优化的可能性。
这是一种全屏轮播风格的特效,使用HTML、CSS和Javript编写。轮播图包含多张图片和对应的文本介绍,通过自动滑动和手动切换两种方式,展示出不同的内容。该轮播图在网页头部或者特定板块上使用,能够为用户提供直观的视觉体验和丰富的内容呈现。而且,该轮播图可以灵活地设置大小、位置、动画等属性,便于根据实际需求进行个性化定制。
精选毕设项目-图片预览带后端
精选毕设项目-番茄时钟
精选毕设项目-简单的商城小应用
精选毕设项目-仿zcool站酷
精选毕设项目-录音机
南京理工大学毕业论文overleaf LaTex模板,按照我个人的写作需求修改后的版本