perl入门知识(3)
引用
在很多场合下使用引用传值,能在很大程度上提高代码的运行效率。
定义一个引用在变量名前加”\”就可以了,如:
$ra=\$a;
$rb=\@b;
$rc=\%c;
变量名前面依然是$。
而得到的引用是不能直接当做变量使用,需要解引用。解引用的方法是在变量名前加上变量原本类型所对应的符号。比如$rb是对一个数组的引用,那为了得到数组,就可以使用@$rb来得到整个数组。可以通过两种方式访问数组中数据,一种是$$rb[1],另一种是使用“->”符号$rb->[1]。明显第二种方式更加简洁。对哈希的操作类似$$rc{a},$rc->{a}。
匿名存储
匿名数据结构也是经常用到的,比如在useragent的post方法中会传递一个匿名的hash表。
匿名数组的创建不再是使用(),而是[];同样匿名hash使用{}创建,而不是()。
注意,它返回的是引用!
$ra={'a'=>1,'b'=>2};
$ra->{a}=3;
print $$ra{a};
特殊用法
$str = 'my name';
$strstr='your name';
echo "${str}str is hello"; //my namestr is hello
echo "$strstr is hello"; //your name is hello
echo "$strabc is hello"; // Undefined variable: strabc in
{}的作用是限制变量名
sub函数(过程)
基本sub格式
sub subname{
local ($filevar) = @_;
local ($s1, $s1);
...
…
}
&subname; #调用加&
do my_sub(1, 2, 3); #另一种调用方式:do调用,等价于&my_sub(1, 2, 3);
基本的sub参数传递
实际是将参数@_赋值给局部变量
sub参数的两种表示方式:
整体形式(数组形式) @_
单独形式(数组元素形式) $_[ ]
#!/usr/bin/perl
&gotest("stringgogo",1,3,"4test");
sub gotest{
local($tmp1,$tmp2,$tmp3,$tmp4)=@_; #或my(@tmp)=@_;
print "no.1 para is ",$tmp1,"\n";
print "no.2 para is ",$tmp2,"\n";
print "no.3 para is ",$tmp3,"\n";
print "no.4 para is ",$tmp4,"\n";
}
#!/usr/bin/perl
&gotest("stringgogo",1,3,"4test");
sub gotest{
print "no.1 para is ",$_[0],"\n";
print "no.2 para is ",$_[1],"\n";
print "no.3 para is ",$_[2],"\n";
print "no.4 para is ",$_[3],"\n";
}
perl入门知识(3)的更多相关文章
- perl入门知识(2)
交互式编程你可以在命令行中使用 -e 选项来输入语句来执行代码,实例如下:$ perl -e 'print "Hello World\n"'输入以上命令,回车后,输出结果为:Hel ...
- perl 入门知识(1)
<一> 语句及注释: Perl 语句以分号(;)结尾,用 # 作为一行的注释,没有其它语言中那种跨行的注释.代码块用大括号围起来,这个和 C 类似,但这个大括号在有些地方是强制要求,如在 ...
- Python基础入门知识
本节内容 Python介绍 发展史 Python 2 or 3? 安装 Hello World程序 变量 用户输入 模块初识 .pyc是个什么鬼? 数据类型初识 数据运算 表达式if ...else语 ...
- [置顶] Mysql存储过程入门知识
Mysql存储过程入门知识 #1,查看数据库所有的存储过程名 #--这个语句被用来移除一个存储程序.不能在一个存储过程中删除另一个存储过程,只能调用另一个存储过程 #SELECT NAME FROM ...
- 移动H5开发入门知识,CSS的单位汇总与用法
说到css的单位,大家应该首先想到的是px,也就是像素,我们在网页布局中一般都是用px,但是近年来自适应网页布局越来越多,em和百分比也经常用到了.然后随着手机的流行,web app和hybrid a ...
- H5移动端开发入门知识以及CSS的单位汇总与用法
说到css的单位,大家应该首先想到的是px,也就是像素,我们在网页布局中一般都是用px,但是近年来自适应网页布局越来越多,em和百分比也经常用到了.然后随着手机的流行,web app和hybrid a ...
- Java web 入门知识 及HTTP协议详解
Java web 入门知识 及HTTP协议详解 WEB入门 WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源. Internet上供外界访问的Web资 ...
- Java基础入门知识
Java编程入门知识 知识概要: (1)Java入门基本常识 (2)Java的特性跨平台性 (3)Java的编程环境的搭建 (4)Java的运行机制 (5)第一个Java小程序入门 (1)Java ...
- zabbix入门知识
zabbix入门知识 zabbix中文手册 https://www.zabbix.com/documentation/3.4/manual/ 1.zabbix介绍 Zabbix 是一个企业级的分布式开 ...
随机推荐
- sql server 基本问题解决思路
1.数据库故障排查步骤,如何处理紧急数据库问题;首先根据报错信息找到故障原因.然后实施对应的解决方案.2.SQL调优步骤,如何来判断SQL语句存在问题,怎么定位问题,如何解决这些问题:可以建立一个Pe ...
- NYOJ 275 队花的烦恼一
队花的烦恼一 时间限制:3000 ms | 内存限制:65535 KB 难度:1 描写叙述 ACM队的队花C小+常常抱怨:"C语言中的格式输出中有十六.十.八进制输出,然而却没有二进制输 ...
- thinkpad X1 extreme 安装Ubuntu 18.04.2 LTS
1.安装的时候需要禁用:nouveau.modeset=0 2.安装完成之后需要添加:acpi=off ,ro后面加上3,直接进入终端 3.启动之后:安装nvdia驱动 $ ubuntu-driver ...
- windows使用git时出现:warning: LF will be replaced by CRLF的解决办法
在Windows环境下使用git进行add的时候,会提示如下warning: “warning:LF will be replacee by CRLF”. 这是因为在Windows中的换行符为CRLF ...
- Git简单入门教程
1.下载Git,360的软件管家里搜 2.安装Git,下载好之后安装到指定路径下 安装方法有多个复选框的把第一个也选上,其他默认直接next,最后一步什么都不选 3.配置用户信息:(右键-->g ...
- [LeetCode] 207 Course Schedule_Medium tag: BFS, DFS
There are a total of n courses you have to take, labeled from 0 to n-1. Some courses may have prereq ...
- selenium webdriver testng自动化测试数据驱动
selenium webdriver testng自动化测试数据驱动 selenium webdriver testng自动化测试数据驱动 一.数据驱动测试概念 数据驱动测试是相同的测试脚本使用不同的 ...
- unp第七章补充之TCP半开连接与半闭连接
半打开(Half-Open)连接和半关闭(Half-Close)连接.TCP是一个全双工(Full-Duplex)协议,因此这里的半连接"半"字就是相对于全双工的"全&q ...
- sql server 视图的操作
-- 判断要创建的视图名是否存在if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[视图名]') and OBJ ...
- html5新元素练习(1)
1, <nav> 是专门由于菜单导航,链接导航的元素 2, <header> 主体页面的头部,与head不同,它的内容可以显示出来 3, <footer>页面 ...