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

PERL开发环境搭建>>Windows,Linux,Mac OS

特点

简单

快速

perl解释器直接对源代码程序解释执行,是一个解释性的语言, 不需要编译器和链接器来运行代码>>速度快

灵活

借鉴了C/C++, Basic, Pascal, awk, sed等多种语言, 定位于实用性语言,既具备了脚本语言的所有功能,也添加了高级语言功能

开源.免费 

没有"源代码保护条款" 

应用场合

开发环境搭建

Windows下搭建

下载安装软件

 1.自己安装编译器>>下载Perl模块>>依次进行编译,注册安装

2.下载已经编译好的文件,直接安装

区别: 前一种方法可以安装所有的模块, 后一种方法只能安装预先设定好的模块. 一般编译好的模块都包括了日常所需的模块>>初学者建议选择第二种

Strawberry perl的安装 :  Strawberry perl的下载,查询版本号,配置Path环境变量,查找perl解释器的位置-CSDN博客

其他软件: ActivePerl 

2.点击文件进行安装

3.设置环境变量

安装软件(ActivePerl ,ActivePerl )时,软件会自动设置环境变量, 有时由于系统的兼容性问题, 需要手动设置

设置环境变量的目的是: 在使用Perl时, 只需要输入perl, 可以不带绝对路径>>让系统认识这四个字母

设置环境变量的方法:Strawberry perl的下载,查询版本号,配置Path环境变量,查找perl解释器的位置-CSDN博客

4.测试安装是否成功

Strawberry perl的下载,查询版本号,配置Path环境变量,查找perl解释器的位置-CSDN博客

在Linux下搭建

下载 → 解压 → 配置 → 编译 → 安装

以下所有命令均在Linux终端中执行 

1.检查是否自带Perl

大多数Linux系统自带perl, 但可能存在版本过旧的问题

2.下载安装源码

如果系统没有Perl, 下载安装源码

# 示例下载链接(需替换为实际版本)
wget https://www.cpan.org/src/5.0/perl-5.20.2.tar.gz
  • 作用:从 Perl 官网 下载指定版本的源码压缩包。

注意:需确保系统已安装 wget 或 curl

如果官方链接失效,可通过国内镜像(如阿里云、清华源)下载 Perl 源码包

wget https://mirrors.aliyun.com/CPAN/src/5.0/perl-5.20.2.tar.gz

检查wget是否安装

检查cur1是否安装

如果未安装,根据系统包管理器安装

安装后再次运行 which 或 --version 命令确认是否成功

3. 解压源码包

tar zxvf perl-5.20.2.tar.gz -C /usr/local/src
  • 作用:解压下载的 tar.gz 文件到 /usr/local/src 目录。

  • 参数解释

    • z:解压 .gz 格式。"gzip"

    • x:解压文件。"extract"

    • v:显示解压过程(可选)。"verbose"

    • f:指定文件名。"file"

    • -C:指定解压目标目录。"change directory"

  • 执行位置:在终端中运行,需确保当前用户对 /usr/local/src 有写入权限。

4. 创建安装目录

mkdir /usr/local/perl

没有root权限时 

sudo mkdir /usr/local/perl

5.  进入解压目录

cd /usr/local/src/perl-5.20.2

如果解压路径不同,需调整命令中的路径

6. 配置编译选项

./Configure -des -Dprefix=/usr/local/perl -Dusethreads -Uversiononly
  • ./Configure
    Perl 的配置脚本(注意首字母大写 C,这是 Perl 特有的脚本名称)。

  • -des

    • -d:使用默认答案(非交互式安装)。"default"

    • -e:静默模式(不显示冗长输出)。"execute" 或 "environment"

    • -s:跳过部分非必要提示, 静默安装。"silent"

  • -Dprefix=/usr/local/perl
    指定安装路径,编译后的 Perl 会安装到 /usr/local/perl/bin/,避免覆盖系统自带 Perl。-Dprefix 指的是"destination prefix"目标安装路径

  • -Dusethreads
    启用线程支持(需系统具备线程库,如 pthread)。-Dusethreads 选项代表的是 "enable threads", 在编程和命令行参数中,-D 前缀通常用于表示 "define" 或 "enable" 的意思。这种用法源自于 C 语言和 Unix 系统中的宏定义,其中 -D 用于定义宏。

  • -Uversiononly
    禁用仅保留版本号命名的 Perl 二进制, -Uversiononly 选项代表 "Universal version only"。这个参数用于指定在安装或编译 Perl 时,只使用通用的版本命名(如 perl),而不是特定版本的命名(如 perl5.20.2

7.编译和安装

make      # 编译源码(可能耗时较长)
make test # 可选:运行测试套件
sudo make install  # 安装到指定前缀路径

 8.替换系统自带的 Perl 版本

 备份系统自带的 Perl
sudo mv /usr/bin/perl /usr/bin/perl.bak

创建符号链接
sudo ln -sf /usr/local/perl/bin/perl /usr/bin/perl
  • sudo:以超级用户(root)权限执行命令。sudo 代表 "superuser do"。

  • ln:命令用于创建链接,可以是硬链接或符号链接。ln 代表 "link"。

  • -s:指定创建符号链接(软链接)。s 代表 "symbolic"。

  • -f:如果目标链接已经存在,强制删除并重新创建。f 代表 "force"。(若未备份原文件,需谨慎使用)

 测试是否安装成功

perl -version

如果返回” This is perl 5, version ......” 说明安装成功

9. 执行perl脚本

方法1

通过 Perl 解释器显式运行

perl test.pl
  • 无需 shebang 和文件权限,直接调用当前环境的 perl 解释器。

是否要配置 PATH 环境变量 

 1.不需要配置 PATH 的情况

系统默认 Perl 路径已包含在 PATH 中

运行

which perl

若输出类似 /usr/bin/perl,则说明已全局可用

2.需要配置 PATH 的情况

自定义安装路径

# 临时生效(仅当前终端)
export PATH=/usr/local/perl/bin:$PATH# 永久生效(添加到 ~/.bashrc 或 ~/.bash_profile)
echo 'export PATH=/usr/local/perl/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

之后才能直接调用 perl test.pl(否则需写全路径 /usr/local/perl/bin/perl test.pl) 

多版本共存时切换默认 Perl

若系统存在多个 Perl 版本(如系统自带 /usr/bin/perl 和自定义安装 /usr/local/perl/bin/perl),需通过 PATH 优先级控制默认版本。

临时切换

# 使用自定义版本优先
export PATH=/usr/local/perl/bin:$PATH# 使用系统版本优先
export PATH=/usr/bin:$PATH

永久切换

# 永久生效(添加到 ~/.bashrc 或 ~/.bash_profile)
echo 'export PATH=/usr/local/perl/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
方法2

 给perl脚本文件添加执行权限

chmod +x test.pl

必须在脚本第一行指定 Perl 解释器路径

#!/usr/bin/perl
# 或使用自定义路径(如新安装的 Perl)
#!/usr/local/perl/bin/perl

执行

./test.pl
  • ./ 表示当前目录(相对路径),避免被系统误认为是命令。

Mac  OS下搭建

 MacO系统默认自带安装了Perl,也可通过Xcode来重新安装Perl

进入 App Store,搜索并安装 Xcode(苹果官方开发工具包)。

在Applications->Utilities下打开Terminal.app,

输入

curl-L http://xrl.us/installperlosx | bash
  1. curl

    • 一个用于传输数据的命令行工具,支持 HTTP、HTTPS、FTP 等协议。

    • 此处用于从指定 URL 下载内容。

  2. -L 选项

    • 让 curl 自动跟随重定向(如果 URL 返回 301/302 跳转,会追踪到最终地址)。

    • 例如,xrl.us 是一个 URL 缩短服务,实际会跳转到真实的 Perl 安装脚本地址。

    • L 即 "location"

  3. http://xrl.us/installperlosx

    • 这是 Perl 官方为 macOS 提供的安装脚本的短链接。

    • 实际会跳转到类似 https://raw.githubusercontent.com/perlbot/installperlosx/main/installperlosx 的地址(具体以官方为准)。

   4. | bash

  • 将下载的脚本内容通过管道( | )传递给 bash 解释器直接执行,完成 Perl 的自动安装。

安装完成后,在终端中perl-v查看已安装的Perl版本信息

在终端中用 perl<程序名>来运行Per程序

短链接 

http://xrl.us/installperlosx 是一个 URL 短链接,它的作用是将一个很长的原始网址压缩成简短易记的形式。

xrl.us 

是 Perl 社区中一个知名的 URL 短链接服务,专门为 Perl 相关的资源、文档、邮件列表或讨论提供简短的网址。它的域名是 "xrl.us"(发音类似 "short URL")

短链接如何映射到原始链接

短链接服务(如 xrl.us)维护一个 数据库,存储短链接和原始 URL 的对应关系

如何根据原始 URL 创建短链接
方法 1:通过短链接服务网站
  1. 访问短链接服务提供商的网站(如 xrl.us 或 bit.ly)。

  2. 在输入框中粘贴原始 URL(长链接)。

  3. 点击生成按钮,系统会返回一个短链接(如 http://xrl.us/installperlosx)。

方法 2:通过 API(编程方式)

部分服务提供 API,可通过代码生成短链接。例如:

终端输入

curl -X POST https://api.xrl.us/create \-d "url=https://raw.githubusercontent.com/perlbot/installperlosx/main/installperlosx"

返回结果可能包含短链接

{"short_url": "http://xrl.us/installperlosx"}

解释命令

curl

  • 功能:一个用于传输数据的命令行工具,支持多种协议(HTTP/HTTPS/FTP 等)。

  • 此处作用:向指定的 API 发送 HTTP 请求。

-X POST

  • 功能:指定 HTTP 请求方法为 POST(用于提交数据)。

  • 说明:创建资源时通常使用 POST 方法。

https://api.xrl.us/create

  • 功能:目标 API 地址(假设的短链接服务接口)。

  • 说明:

    • api.xrl.us:短链接服务提供商的 API 域名。

    • /create:生成短链接的接口路径。

-d "url=原始URL"

  • 功能:发送 POST 请求的正文数据(表单格式)。

  • 参数:

    • url=:服务商定义的参数名(表示要缩短的原始 URL)。

    • 后面的长链接是待缩短的目标地址。

    • -d 代表"data"

相关文章:

PERL开发环境搭建>>Windows,Linux,Mac OS

特点 简单 快速 perl解释器直接对源代码程序解释执行,是一个解释性的语言, 不需要编译器和链接器来运行代码>>速度快 灵活 借鉴了C/C, Basic, Pascal, awk, sed等多种语言, 定位于实用性语言,既具备了脚本语言的所有功能,也添加了高级语言功能 开源.免费 没有&qu…...

赛博威智慧导购平台,融合AI激活一线导购效能,破局增长瓶颈

导购管理≠“管人”&#xff0c;价值释放才是终极命题 在快消行业&#xff0c;一线导购是链接品牌与消费者的核心触点&#xff0c;更是市场洞察与销售转化的关键枢纽。然而&#xff0c;许多企业对导购的管理仍停留在“管人”的初级阶段&#xff1a;基础考勤、任务下发、薪资核…...

鸿蒙项目源码-记账本app个人财物管理-原创!原创!原创!

鸿蒙记账项目源码个人财务管理含文档包运行成功ArkTS语言。 我一个月写的原创作品&#xff0c;请尊重原创。 原创作品&#xff0c;盗版必究&#xff01;&#xff01;&#xff01; api12 SDK5.0.0仅适用于最新的2024版本DevEco studio 共9个页面&#xff1a;广告倒计时页、登录、…...

深入理解 `git pull --rebase` 与 `--allow-unrelated-histories`:区别、原理与实战指南

&#x1f680; git pull --rebase vs --allow-unrelated-histories 全面解析 在日常使用 Git 时&#xff0c;我们经常遇到两种拉取远程代码的方式&#xff1a;git pull --rebase 和 git pull --allow-unrelated-histories。它们的区别是什么&#xff1f;各自适用哪些场景&…...

ExpTimerApcRoutine函数分析之作用是ActiveTimerListHead里面移除定时器_etimer

第一部分&#xff1a; VOID ExpTimerApcRoutine ( IN PKAPC Apc, IN PKNORMAL_ROUTINE *NormalRoutine, IN PVOID *NormalContext, IN PVOID *SystemArgument1, IN PVOID *SystemArgument2 ) /* Routine Description: This function is the special …...

Ovito的python脚本

在 OVITO 里,Python 对象是构建脚本化操作的基础。下面为你详细介绍 OVITO 中 Python 对象的基本概念: 1. 数据管道(Pipeline) 数据管道是 OVITO 里最核心的对象之一。它就像一个流水线,把数据输入进来,经过一系列处理步骤,最后输出处理好的数据。 创建管道:借助 imp…...

【免费】2007-2019年各省地方财政文化体育与传媒支出数据

2007-2019年各省地方财政文化体育与传媒支出数据 1、时间&#xff1a;2007-2019年 2、来源&#xff1a;国家统计局、统计年鉴 3、指标&#xff1a;行政区划代码、地区、年份、地方财政文化体育与传媒支出 4、范围&#xff1a;31省 5、指标说明&#xff1a;地方财政在文化、…...

3PL EDI:SA Piper Logistics EDI需求分析

SA Piper Logistics成立于2005年&#xff0c;是一家专注于全球供应链管理的第三方物流服务商&#xff08;3PL&#xff09;&#xff0c;总部位于美国芝加哥。公司以“优化物流效率&#xff0c;重塑供应链价值”为使命&#xff0c;提供仓储管理、运输规划、订单履行及跨境清关等一…...

NOIP2007提高组.矩阵取数游戏

题目 492. 矩阵取数游戏 思路 不难发现, 每一行之间是独立的, 因此可以求出每一行的最大值, 然后行与行之间最大值相加, 就是总的最大值 对于行内来说, 每次可以选取左边或者右边, 可以使用区间 d p dp dp求解, 时间复杂度 O ( n 3 ) O(n ^ 3) O(n3), 因为列的最大值是 80 …...

项目实战--权限列表

后端数据&#xff1a; 用表格实现权限列表 const dataSource [{key: 1,name: 胡彦斌,age: 32,address: 西湖区湖底公园1号,},{key: 2,name: 胡彦祖,age: 42,address: 西湖区湖底公园1号,}, ];const columns [{title: 姓名,dataIndex: name,key: name,},{title: 年龄,dataInd…...

若依赖前端处理后端返回的错误状态码

【背景】 后端新增加了一个过滤器&#xff0c;用来处理前端请求中的session 若依赖存放过滤器的目录&#xff1a;RuoYi-Vue\ruoyi-framework\src\main\java\com\ruoyi\framework\security\filter\ 【问题】 后端返回了一个状态码为403的错误&#xff0c;现在前端需要处理这…...

【计网】数据包

期末复习自用的&#xff0c;处理得比较草率&#xff0c;复习的同学或者想看基础的同学可以看看&#xff0c;大佬的话可以不用浪费时间在我的水文上了 1.数据包的定义&#xff1a; 数据包是网络通信中的基本单元&#xff0c;它包含了通过网络传输的所有必要信息。数据包的结构…...

web权限划分提权和移权

前言&#xff1a;权限的基本认知 渗透权限划分&#xff1a;假如我们通过弱口令进入到web的后台 这样我们就拿到了web的管理员权限 管理员权限是web中最高的权限&#xff08;一般我们进入web的时候数据库会进行用户权限的划分&#xff1a;假设 0-10为最高的权限 11-10000为普通…...

LocalDateTime序列化总结

版权说明&#xff1a; 本文由CSDN博主keep丶原创&#xff0c;转载请保留此块内容在文首。 原文地址&#xff1a; https://blog.csdn.net/qq_38688267/article/details/146703276 文章目录 1.背景2.序列化介绍常见场景关键问题 3.总体方案4.各场景实现方式WEB接口EasyExcelMybat…...

[ 春秋云境 ] Initial 仿真场景

文章目录 靶标介绍&#xff1a;外网内网信呼oa永恒之蓝hash传递 靶标介绍&#xff1a; Initial是一套难度为简单的靶场环境&#xff0c;完成该挑战可以帮助玩家初步认识内网渗透的简单流程。该靶场只有一个flag&#xff0c;各部分位于不同的机器上。 外网 打开给的网址, 有一…...

unity 截图并且展现在UI中

using UnityEngine; using UnityEngine.UI; using System.IO; using System.Collections.Generic; using System; using System.Collections;public class ScreenshotManager : MonoBehaviour {[Header("UI 设置")]public RawImage latestScreenshotDisplay; // 显示…...

XHR.readyState详解

XHR.readyState详解 引言 XHR.readyState是XMLHttpRequest对象的一个属性,它反映了当前请求的状态。在Ajax编程中,正确理解和使用XHR.readyState对于调试和确保异步请求的正确执行至关重要。本文将详细介绍XHR.readyState的属性值、含义以及在Ajax请求中的具体应用。 XHR.…...

SQL Server数据库引擎服务启动失败:端口冲突

问题现象&#xff1a; SQL Server 2022 安装完成后&#xff0c;数据库引擎服务无法启动&#xff0c;日志报错 “TCP 端口 1433 已被占用”&#xff08;ERROR_LOG_SYS_TCP_PORT&#xff09;。 快速诊断 检测端口占用&#xff1a; # 查看 1433 端口占用情况&#xff08;需管理员权…...

前端知识点---用正则表达式判断邮箱(javascript)

// 全面的正则&#xff08;兼容大多数情况&#xff09; const emailRegex /^[a-zA-Z0-9._%-][a-zA-Z0-9.-]\.[a-zA-Z]{2,}$/;// 或直接使用浏览器内置验证 <input type"email" required>/&#xff1a;正则表达式的起始和结束标志。 ^&#xff1a;匹配字符串的…...

中断管理常用API(四)

一、request_irq(...) request_irq 函数主要用于硬中断相关操作&#xff0c;它的核心作用是把一个中断处理函数和特定的中断号进行绑定。当硬件设备触发该中断号对应的中断时&#xff0c;内核就会调用绑定的中断处理函数&#xff0c;像 irqhandler_func 这类。 此函数在多种硬件…...

RabbitMQ高级特性--重试特性

目录 1.重试配置 2.配置交换机&队列 3.发送消息 4.消费消息 5. 运行程序观察结果 6. 手动确认 注意&#xff1a; 在消息传递过程中, 可能会遇到各种问题, 如网络故障, 服务不可用, 资源不足等, 这些问题可能导致消息处理失败. 为了解决这些问题, RabbitMQ 提供了重试机制, …...

pyspark学习rdd处理数据方法——学习记录

python黑马程序员 """ 文件&#xff0c;按JSON字符串存储 1. 城市按销售额排名 2. 全部城市有哪些商品类别在售卖 3. 上海市有哪些商品类别在售卖 """ from pyspark import SparkConf, SparkContext import os import jsonos.environ[PYSPARK_P…...

C语言入门教程100讲(0)从了解C语言的发展史开始

文章目录 引言1. C语言的起源2. C语言的诞生3. C语言的标准化4. C语言的进一步发展5. C语言的影响与应用6. C语言的未来结语引言 C语言作为一种高效、灵活且具有广泛应用的编程语言,在计算机科学史上占据着举足轻重的地位。它的设计不仅影响了后来的编程语言,也对操作系统、…...

【HTML 基础教程】HTML <head>

HTML <head> 查看在线实例 - 定义了HTML文档的标题"><title> - 定义了HTML文档的标题 使用 <title> 标签定义HTML文档的标题 - 定义了所有链接的URL"><base> - 定义了所有链接的URL 使用 <base> 定义页面中所有链接默认的链接目…...

练习题:111

目录 Python题目 题目 题目分析 需求理解 关键知识点 实现思路分析 代码实现 代码解释 指定文件路径和名称&#xff1a; 定义要写入的内容&#xff1a; 打开文件并写入内容&#xff1a; 异常处理&#xff1a; 输出提示信息&#xff1a; 运行思路 结束语 Python题…...

混合知识表示系统框架python示例

前文我们已经深入学习了框架表示法、产生式规则和一阶谓词逻辑,并对它们进行了深度对比,发现它们在不同的应用场景下各有优缺点。 一阶谓词逻辑适合复杂逻辑推理场景,具有数学定理证明、形式化系统规范的优点;产生式规则适合动态决策系统,支持实时决策(如风控、诊断),规…...

信号集操作函数

目录 一、sigpending函数 功能&#xff1a; 头文件&#xff1a; 函数原型&#xff1a; 函数参数&#xff1a; 返回值&#xff1a; 二、sigemptyset函数 功能&#xff1a; 原型&#xff1a; 参数&#xff1a; 返回值&#xff1a; 三、sigfillset函数 功能&#xf…...

学习不同电脑cpu分类及选购指南

关于电脑cpu 一、CPU型号的核心组成与命名规则Intel命名规则:AMD命名规则:5. 后缀:Intel常见后缀及其含义:AMD后缀一些常见的后缀及其含义:二、主流品牌CPU的分类与性能差异三、区分CPU型号的实用方法四、主流品牌CPU对比与选择建议五、选购CPU的注意事项关于不同主流CPU的…...

MATLAB 控制系统设计与仿真 - 30

用极点配置设计伺服系统 方法2-反馈修正 如果我们想只用前馈校正输入&#xff0c;从而达到伺服控制的效果&#xff0c;我们需要很精确的知道系统的参数模型&#xff0c;否则系统输出仍然具有较大的静态误差。 但是如果我们在误差比较器和系统的前馈通道之间插入一个积分器&a…...

Baklib知识中台驱动智能架构升级

构建四库体系驱动架构升级 在数字化转型过程中&#xff0c;企业普遍面临知识资源分散、隐性经验难以沉淀的痛点。Baklib通过构建知识库、案例库、流程库及资源库四层核心体系&#xff0c;为知识中台搭建起结构化基础框架。知识库以AI分类引擎实现文档标签化存储&#xff0c;案…...