Perl脚本语言学习1:

article/2024/12/23 13:25:26

一、perl基本要素:数字和字符串

perl语言的核心是正则表达式,在文本处理上非常有优势,与python类似,但语法不同,perl的语法很灵活,用多了才会觉得好用。
第一篇博文就这么潦草的结束,慢慢摸索,希望这是一个开始


文章目录

  • 一、perl基本要素:数字和字符串


  • 标量常量:数字 和 字符串
  • 标量变量:存放标量

字符串
只有使用转义字符才能在字符串中插入特殊的字符。

  • 单引号:‘ ’中的每个字符都表示它本身,$a, \n等等,都不会进行处理,原样输出。
  • 双引号:“ ”中Perl会查看是否存在 变量名 和 转义序列,一旦发现,会自动替换。

如何便捷的将字符串用 双引号 或 单引号 括起来?

  • qq运算符:qq(I said, “I love you!”) 用法如上 q运算符: q(Tom’s tree)
  • 用法与之前单引号一样,会原样输出单引号内的所有内容。

标量变量

  • 特殊变量($_):当前默认值

运算符(运算符之间可以有空格)

数字运算符有哪些?

  • 加+;减-;乘*;除/;求余%;取幂**;

字符串运算符有哪些?

  • 并置运算符(.)(运算对象必须为字符串标量或者标量变量)
  • 可以使用反斜杠\,指定屏蔽字符串内的内插替换(标量变量和转义字符)
  • 如果字符串中标量名和字符串过于紧密,可以用{}显示指定变量名,如${name}space
  • 重复运算符(x),如“-”x 10;

例如,
如果操作数属于混合类型(譬如数字与字符串),Perl 会首先判断运算符期望的操作数类型,然后作相应的类型转换。这个过程又称为运算符重载(overload)。

如果运算符是数值型的(如代数运算符),而操作数却是字符串的话,Perl 将把该字符串转换为相应的十进制浮点数。未定义的字符串值会转换为数字 0。如果字符串首部拥有空格前缀,或者末尾带有非数字字符的话,Perl 会忽略它们。如果某个字符串无法转换为相应数字的话,Perl 会将其变成 0。

(示例):

$string1 = "5 dogs ";
$string2 = 4;
$number = $string1 + $string2; # Numeric context
print "Number is $number.\n"; # Result is 9

同样,如果 Perl 碰到了字符串型运算符,而相应操作数是数值型的话,便会将数字转换为字符串进行处理。例如,下面使用了连接运算符,负责把两个字符串连接到一起。

(示例):

$number1 = 55;
$number2 = "22";
$string = $number1 . $number2; # Context is string
print "String is $string.\n" # Result is "5522"

在这里插入图片描述

代码如下(示例):

(The Script)$x = " 12hello!!" + "4abc\n";
# Perl will remove leading whitespace and trailing non-numeric
# charactersprint "$x";print "\n";$y = ZAP . 5.5;print "$y\n";
(Output)16ZAP5.5

解释:

  1. 加号(+)是一个数值运算符。字符串“ 12hello”和“4abc\n”会转换成数字(需去除其空格前
    缀和末尾的非数字字符),然后再执行加法运算。其运算结果存储到标量 $x 中。
  2. 打印标量 $x。
  3. 由于在转换成数字时会把 \n 从字符串 4\n 中去除,因此在打印时需要提供另一个换行符 \n。
  4. 点号(.)左右都是空白字符,因此它是一个字符串运算符,作用是连接两个字符串。在本行
    中,数字 5.5 将先转换成字符串,然后和另一个字符串 ZAP 连接在一起。
  5. 打印标量 $y 的值。

尖括号运算符?

  • 用于读写文件,,从标准输入读入一行;默认会读入我们最后输入的回车,可以使用从chomp运算符去掉;
  • chomp可以去除任何参数结尾的换行符,返回被删除的字符数(删除了返回1,没删除返回0)。

示例: 把输入内容赋值给标量型变量
当从文件句柄 STDIN 读取输入内容时,倘若上下文语境是标量型,程序将每次读取输入的一行(包括换行符),并将其内容作为单个字符串赋予标量型变量。

代码如下(示例):

(The Script)# Getting a line of input from the keyboard.
print "What is your name? ";
$name = <STDIN>;
print "What is your father's name? ";
$paname=<>;
print "Hello respected one, $paname";
(Output)
What is your name? Isabel
What is your father's name? Nick
Hello respected one, Nick

解释:

  1. 把字符串 What is your name? 发送给 STDOUT 文件句柄,该句柄默认指向终端屏幕。
  2. 位于输入运算符 <>(又称方块运算符)中的 STDIN 读取一行输入,并把这一行内容及其末
    尾的换行符赋值给变量 $name。在把输入内容赋予标量型变量时,程序会一直读取输入字符
    直到用户按下 Enter 键。
  3. 把字符串打印到 STDOUT 文件句柄。
  4. 如果输入运算符是空的,则从 STDIN 读取下一行输入内容,其行为与上述第 2 步相同,只
    不过这次是将输入值赋予 $paname。

http://chatgpt.dhexx.cn/article/tOBb7mSS.shtml

相关文章

Perl脚本编程

Perl脚本学习笔记 文章目录 Perl脚本学习笔记一、编写你的第一个Perl程序二、Perl的基本构件1.直接量2.标量变量3.表达式和运算符 三、控制程序流1.if 语句2.while 循环3.for 循环 四、列表与数组1.列表2.数组3.遍历数组4.数组排序 五、文件操作1.打开文件2.读取文件3.写入文件…

71.区分异步和多线程应用场景

初学者有时候会将异步和多线程混为一谈。如果对它们之间的区别不是很清楚&#xff0c;很容易写出下面这样的代码&#xff1a; private void buttonGetPage_Click(object sender, EventArgs e) { Thread t new Thread(() >{ var request HttpWebRequest.Create(&q…

多线程的简单实现和应用场景

main方法测试&#xff0c;定义for循环造假数据&#xff0c;定义time在方法结束后时间相减获取执行毫秒数&#xff0c;单线程跟多线程对比执行时间。 上图 我定义了2000000的数据量&#xff0c;可以看到单线程执行时间为6520毫秒&#xff0c;多线程&#xff08;3个&#xff09;执…

多线程的创建方式及多线程应用场景

本篇大概详解思路如下思维导图: 目录 在java程序中创建线程 start()和run()的区别 start()方法为啥不能被重复调用 创建线程的7种方式 多线程提高速度 多线程的使用场景 在java程序中创建线程 我们知道一个进程包括多个线程(pcb---每个线程对应一块pcb,一个进程包括多个p…

Java多线程的应用场景和应用目的举例

微信公众号&#xff1a;javafirst 01 通俗的解释一下多线程 多线程用于堆积处理&#xff0c;就像一个大土堆&#xff0c;一个推土机很慢&#xff0c;那么10个推土机一起来处理&#xff0c;当然速度就快了&#xff0c;不过由于位置的限制&#xff0c;如果20个推土机&#xff0…

多线程的使用场景

多线程的使用 使用线程池ExecutorService &#xff0c;exe.execute来开始线程&#xff0c;thread,runabble,callabble都可以&#xff0c;isTerminated来判断线程池的线程是否都执行完毕 Testpublic void testThread() throws InterruptedException {//创建线程池ExecutorServi…

【多线程/线程池】项目中实际应用场景

场景一、快速响应用户的请求 描述: 用户发起的实时请求&#xff0c;服务追求响应时间。比如说用户要查看一个商品的信息&#xff0c;那么我们需要将商品维度的一系列信息如商品的价格、优惠、库存、图片等等聚合起来&#xff0c;展示给用户。 场景二、快速处理批量的任务 描…

多线程相关实例(多线程经典应用场景)

转载&#xff0c;from 网络&#xff0c;未能找到原创人员&#xff0c;只找到一个转载 https://blog.csdn.net/u013521220/article/details/79648270 多线程实例目录 相关知识&#xff1a;经典案例一&#xff1a;三个售票窗口共同出售20张票经典案例二&#xff1a;AB两人共用一个…

多线程的实现和使用场景

多线程的实现和使用场景 一、多线程实现方式1.1 Thread实现1.2 Runnable实现 二、多线程的使用场景1.多线程使用场景1.1 多线程应该最多的场景&#xff1a;1.2多线程的常见应用场景&#xff1a; 2.多线程小案列2.1 多线程计算2.2 多线程实现卖票小程序2.3多线程卖票小程序优化2…

子网掩码、网关及网络号与主机号的区分与计算

前言&#xff1a; 当前使用的IP地址有4个字节&#xff08;32bit&#xff09;组成&#xff0c;即IPV4编码方式。每个IP地址包括两部分&#xff1a;网络号和主机号。当分配给主机号的二进制位越多&#xff0c;则能标识的主机数就越多&#xff0c;相应地能标识的网络数就越少&…

计算机网络之ip、子网掩码、网络号、主机号等概念解析

在工作中谈论到计算机网络时&#xff0c;有几个经常出现的术语&#xff0c;比如&#xff1a;ip、子网掩码、网段等等。之前对这些概念的理解都比较模糊&#xff0c;只知其大概意思&#xff0c;随着工作中遇到的网络问题越来越多&#xff0c;有必要详细理解一下计算机网络的基础…

IP地址、子网掩码、网络号、主机号、网络地址、主机地址以及ip段/数字-如192.168.0.1/24是什么意思?

背景知识 IP地址 IP地址被用来给Internet上的电脑一个编号。大家日常见到的情况是每台联网的PC上都需要有IP地址&#xff0c;才能正常通信。我们可以把“个人电脑”比作“一台电话”&#xff0c;那么“IP地址”就相当于“电话号码”&#xff0c;而Internet中的路由器&#xff0…

若尔当型状态空间方程的能控能观判断

若尔当型状态空间方程的能控能观判断 对于若尔当型状态空间方程&#xff1a; 能控充要条件&#xff1a;当且仅当同一特征值对应的每个若尔当块的最后一行对应B矩阵的行向量线性无关。 注:每个特征值均应满足以上条件。 能观充要条件&#xff1a;当且仅当同一特征值对应的每个…

状态空间方程的能控性与能观性判断

状态空间方程的能控性与能观性判断 能控性判断方法 对于状态空间方程&#xff0c;判断是否能控。 注&#xff1a;由于输出在能控性方面不起任何作用&#xff0c;因此在能控性研究中忽略输出方程。 矩阵对任意t>0均非奇异。的“能控性矩阵”行满秩。的矩阵在A的任一特征值…

Matlab:传递函数(含迟延环节)/状态空间方程/z传递函数的构造/运算/转化

1、传递函数 1.1 构造传递函数 &#xff08;1&#xff09; Matlab可以这样构造上式 num[10 30 20]; den[1 12 47 60]; sysctf(num,den) 运行结果 &#xff08;2&#xff09; 根据零极点构造表达式&#xff1a; z[-1 -2]; p[-3 -4 -5]; k10; sysczpk(z,p,k) 运行结果&…

【电机/鼠笼型感应电机】IM模型建立、坐标变换、状态空间方程推导

目录 一、感应电机三相数学模型 1.1 磁链方程 1.2 电压方程 1.3 转矩方程和运动方程 二、坐标变换 2.1 原理 2.2 Clarke变换和逆变换 2.3 Park变换和逆变换 三、感应电机两相数学模型 . 3.1 αβ坐标系中 3.2 dq坐标系中 四、感应电机状态方程 4.1 状态变量的选择 …

c语言 状态空间控制方程,MPC学习笔记1:基于状态空间模型的预测控制(2)

基于估计的无约束预测控制 1.引言 基本上这两个部分都是在线性理论的框架下,利用状态空间法来建模、求解控制律。状态空间模型在理论分析上具有很强的优越性,但实际应用中能直接准确且经济地获取系统状态并不容易。有些状态,尤其是温度(如火箭喷口温度等)只能间接估计,因此…

控制建模matlab练习02:状态空间方程系统

此建模从一个简单的系统&#xff1a;弹簧质量阻尼系统&#xff0c;来学习状态空间方程系统。 m是质量&#xff1b;b是阻尼系数&#xff1b;k是弹簧系数。 此系统的状态空间方程&#xff0c;如下图&#xff1a; 01新建脚本&#xff08;.m文件&#xff09; 我们在matlab主页&a…

卡尔曼滤波(Kalman Filtering)——(3)数据融合 状态空间方程

数据融合 协方差 状态空间方程 观测器 一、数据融合假设举例公式推导过程再次理解 二、状态空间方程阻尼滑块模型1、连续表达式2、离散表达形式3、符号含义 参考文献 一、数据融合 假设举例 假设测量一物体的质量&#xff0c;现在有两个测量设备但是都存在误差且误差服从正态分…