当前位置: 首页 > news >正文

介绍一些编程语言— Perl 语言

介绍一些编程语言— Perl 语言

Perl 语言

简介

Perl 是一种动态解释型的脚本语言。 最初的设计者为拉里・沃尔,它于 1987 1987 1987 12 12 12 18 18 18 日发表。Perl 借取了 C、sed、awk、shell scripting 以及很多其他编程语言的特性。其中最重要的特性是他内部集成了正则表达式的功能,以及巨大的第三方代码库 CPAN。

产生背景

1987 1987 1987 年 Larry Wall 发布 Perl1.0 以来,用户数一直急剧增加,同时越来越多的程序员与软件开发者参与 Perl 的开发。从最初被当做一种跨平台环境中书写可移植工具的高级语言开始,Perl 被广泛地认为是一种工业级的强大工具,可以在任何地方用来完成你的工作。perl 的前身是 Unix 系统管理的一个工具,被用在无数的小任务里。后逐渐发展成为一种功能强大的程序设计语言,用作 Web 编程、数据库处理、XML 处理以及系统管理;在完成这些工作时,同时仍能处理日常细小工作,这是它的设计初衷。Perl 特别适合系统管理和 Web 编程。实际上已经被用在所有 Unix 捆绑在一起作为标准部件发布,同时也用于 Microsoft Windows 和几乎所有操作系统。Perl 的应用非常广泛。

Perl 优点

  • 相比 C、Pascal 这样的"高级"语言而言,Perl 语言直接提供泛型变量、动态数组、Hash 表等更加便捷的编程元素。

  • Perl 具有动态语言的强大灵活的特性,并且还从 C/C++、Basic、Pascal 等语言中分别借鉴了语法规则,从而提供了许多冗余语法。

  • 在统一变量类型和掩盖运算细节方面,Perl做得比其他高级语言(如:Python)更为出色。

  • 由于从其他语言大量借鉴了语法,使得从其他编程语言转到 Perl 语言的程序员可以迅速上手写程序并完成任务,这使得 Perl 语言是一门容易用的语言。

  • Perl 是可扩展的,我们可以通过 CPAN 中心仓库找到很多我们需要的模块。

  • Perl 的 mod_perl 的模块允许 Apache web 服务器使用 Perl 解释器。

Perl 缺点

  • 也正是因为 Perl 的灵活性和"过度"的冗余语法,也因此获得了仅写的"美誉",因为 Perl 程序可以写得很随意,但是可能少写一些字母就会得到意想不到的结果(而不报错),许多 Perl 程序的代码令人难以阅读,实现相同功能的程序代码长度可以相差十倍百倍,这就令程序的维护者(甚至是编写者)难以维护。

  • 同样的,因为 Perl 这样随意的特点,可能会导致一些 Perl 程序员遗忘语法,以至于不得不经常查看 Perl 手册。

  • 建议的解决方法是在程序里使用 use strict;以及 use warnings,并统一代码风格,使用库,而不是自己使用"硬编码"。Perl 同样可以将代码书写得像 Python 或 Ruby 等语言一样优雅。

  • 很多时候,perl.exe 进程会占用很多的内存空间,虽然只是一时,但是感觉不好。

简单程序

输出 Hello World

#!C:\Perl\bin                    #Windows 平台下  
#!/usr/bin/env perl              #Linux 环境下  
print "Hello,World!\n";     

A + B problem

my $in = <STDIN>;
chomp $in;
$in = [split /[\s,]+/, $in];
my $c = $in->[0] + $in->[1];
print "$c\n";

参考

  • https://www.perl.org/

  • https://baike.baidu.com/item/perl/851577?fr=ge_ala

  • https://www.runoob.com/perl/perl-intro.html

  • https://www.oschina.net/p/perl?hmsr=aladdin1e1

http://www.lryc.cn/news/130009.html

相关文章:

  • 原型与继承
  • Flink流批一体计算(14):PyFlink Tabel API之SQL查询
  • JRebel插件扩展-mac版
  • C语言中常见的一些语法概念和功能
  • Python土力学与基础工程计算.PDF-钻探泥浆制备
  • 【机器学习】— 2 图神经网络GNN
  • QT的布局与间隔器介绍
  • 深入浅出Pytorch函数——torch.nn.Linear
  • Vue3.2+TS的defineExpose的应用
  • 牛客网Python入门103题练习|【08--元组】
  • Jenkins改造—nginx配置鉴权
  • (二)VisionOS平台概述
  • 菜单中的类似iOS中开关的样式
  • Vue 2 动态组件和异步组件
  • MongoDB升级经历(4.0.23至5.0.19)
  • iPhone上的个人热点丢失了怎么办?如何修复iPhone上不见的个人热点?
  • AI 媒人:为什么图形神经网络比 MLP 更好?
  • 信息学奥赛一本通 1984:【19CSPJ普及组】纪念品 | 洛谷 P5662 [CSP-J2019] 纪念品
  • JVM——JVM参数指南
  • 马上七夕到了,用各种编程语言实现10种浪漫表白方式
  • Spring Clould 注册中心 - Eureka,Nacos
  • 使用appuploader工具发布证书和描述性文件教程
  • 【面试八股文】每日一题:谈谈你对IO的理解
  • 200. 岛屿数量
  • 【LeetCode】581.最短无序连续子数组
  • 曲面(弧面、柱面)展平(拉直)瓶子标签识别ocr
  • 知识继承概述
  • 深度剖析数据在内存中的存储
  • 【ARM Linux 系统稳定性分析入门及渐进10 -- GDB 初始化脚本介绍及使用】
  • AQS源码解读