0


【云原生 | 40】Docker快速部署高级动态解释型脚本语言Perl

🍁博主简介
🏅云计算领域优质创作者
🏅新星计划第三季python赛道第一名
🏅阿里云ACE认证高级工程师
🏅阿里云开发者社区专家博主
✒️博主微信:15575411187
💊交流社区:小鹏linux(个人社区)欢迎您的加入!

1. 关于Perl

Perl是一个高级的、动态的解释型脚本语言,它的设计借鉴了C、Shell、awk和sed。Perl最重要的特性是它内部集成了正则表达式的功能,以及巨大的第三方代码库CPAN。Perl像C一样强大,同时像awk、sed等脚本语言一样富有表达性。Perl常见于系统管理和文件处理等程序,Perl多数情况下属于Web方案中的胶水语言。

Perl最初的设计者为拉里·沃尔(Larry Wall),于1987年12月18日发表。现在的版本为Perl 6,于2015年12月25日更新。

Perl借取了C、sed、awk、shell 脚本语言以及很多其他程序语言的特性,其中最重要的特性是它内部集成了​​​​​​​正则表达式的功能,以及巨大的第三方代码库CPAN。简而言之,Perl像C一样强大,像awk、sed等脚本描述语言一样方便,被Perl语言爱好者称之为“一种拥有各种语言功能的梦幻脚本语言”、“Unix 中的王牌工具”。

Perl 一般被称为“实用报表提取语言”(Practical Extraction and Report Language),你也可能看到“perl”,所有的字母都是小写的。一般,“Perl”,有大写的 P,是指语言本身,而“perl”,小写的 p,是指程序运行解释器。

Perl最重要的就是它的文本处理能力, 而早期生物信息学的本质就是序列分析,所以“确认过眼神,我遇见对的人”,Perl成了生物信息必学语言

2. Perl的安装及基础用法

Perl语言在Linux系统以及其他类Unix系统,比如说MacOS里都是内置的,所以不需要额外安装,而在Windows系统中则需要额外下载,下载站点当然是官方的<www.perl.org>

很多系统平台上已经默认安装了 perl,我们可以通过以下命令来查看是否已安装:

$ perl -v

This is perl 5, version 18, subversion 2 (v5.18.2) built for darwin-thread-multi-2level
(with 2 registered patches, see perl -V for more detail)

Copyright 1987-2013, Larry Wall
……

大部分的教程都是让大家写一个Perl脚本,

举例1:比如说hello.pl,代码如下

#!/usr/bin/env perl
print "hello world \n"

然后用

perl hello.perl

执行。当然最快的方法还是用Perl的一行命令, 如下所示。

perl -e 'print "hello world"'

举例2:我们将以下代码放到 hello.pl 文件中:

#!/usr/bin/perl
 
# 输出 "Hello, World"
print "Hello, world\n";

代码中 /usr/bin/perl 是 perl 解释器的路径。在执行该脚本前要先确保文件有可执行权限,我们可以先将文件权限修改为 0755 :

$ chmod 0755 hello.pl 
$ ./hello.pl 
Hello, world                   # 输出结果

print 也可以使用括号来输出字符串,以下两个语句输出相同的结果:

print("Hello, world\n");
print "Hello, world\n";

3. Perl POD 文档

什么是 POD?

Pod(Plain Old Documentation), 是一种简单而易用的标记型语言(置标语言),它经常用于在perl程序和模块中的文档书写。

Pod 的 转化器可以将 Pod 转换成很多种格式,例如 text, html, man 等很多。

Pod 标记语言包含三种基本基本类型: 普通, 原文, 和 命令。

  • 普通段落: 你可以在普通段落中使用格式化代码,如黑体,斜体,或代码风格,下划线等。
  • 原文段落: 原文段落,用于代码块或者其他不需要转换器处理的部分,而且不需要段落重排。
  • 命令段落: 命令段落作用于整个的文档,通常用于标题设置或列表标记。所有的命令段落(他只有一行的长度)使用 "=" 开始,然后是一个标识符。 随后的文本将被这条命令所影响。现在被广泛使用的命令包括
=pod (开始文档)
=head1 标题文本
=head2 标题文本
=head3 标题文本
=head4 标题文本
=over 缩进空格数量
=item 前缀
=back (结束列表)
=begin 文档格式
=end 结束文档格式
=for 格式文本
=encoding 编码类型
=cut (文档结束)

在perl中,可以使用 pod2html .pod >.html 来生成html格式的pod文档。

考虑以下 POD 实例:

=begin html
=encoding utf-8
=head1 小鹏linux
=cut

Perl 中可以在模块或脚本中嵌入 POD(Plain Old Documentation) 文档。

POD 是一种简单而易用的标记型语言(置标语言)。

POD 文档使用规则:

POD 文档以 =head1 开始, =cut 结束, =head1 前与 =cut 后添加一空行。

Perl 会忽略 POD 中的文档。实例如下:

#!/usr/bin/perl
 
print "Hello, World\n";
=head1 Hello, World 实例
这是一个 Perl 的简单实例。
=cut
print "Hello, Runoob\n";

执行以上程序,输出结果为:

Hello, World
Hello, Runoob

4. 在Docker中部署Perl

可以使用Docker官方的Perl镜像作为基础,在此之上进行必要的定制。

第一步,下载官方的Perl镜像:

$ docker pull perl

如果大家对Perl的版本有要求,可以在以上命令中加入Tag标签,以便于在下一步的Dockerfile的FROM指令中明确Perl版本号。官方镜像都有明确的标签信息。

第二步,在Perl项目中新建Dockerfile:

FROM perl:5.20
COPY . /usr/src/myapp
WORKDIR /usr/src/myapp
CMD [ "perl", "./perl-sample.pl" ]

新建perl-sample.pl文件:

#!/usr/bin/perl
print "Hello, World!\n";

第三步,通过此Dockerfile,构建自定义的镜像:

$ docker build -t perl-image .

构建成功后,用户可以通过docker images查看:

$ docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
perl-image latest bc28eba086ad About a minute ago 654.9 MB

最后,创建容器并运行:

$ docker run -it --rm --name perl-container perl-image
Hello, World!

如果大家只需要运行单个的Perl脚本,那么无需使用Dockerfile构建自定义镜像,而是通过以下命令直接使用官方Perl镜像,带参数运行容 器:

$ docker run -it --rm --name perl-container -v "$(pwd)":/usr/src/myapp -w /usr/src/myapp perl:5.20 perl perl-sample.pl
Hello, World!

如果大家需要运行Perl的Web项目,则最好先自建内置SSH服务的镜 像,然后以此为基础定制Perl容器,这样可以方便地通过SSH服务访问Perl容器。

👑👑👑结束语👑👑👑

标签: 云原生 docker 容器

本文转载自: https://blog.csdn.net/qq_62294245/article/details/127597100
版权归原作者 小鹏linux 所有, 如有侵权,请联系我们删除。

“【云原生 | 40】Docker快速部署高级动态解释型脚本语言Perl”的评论:

还没有评论