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

perl数组硬引用_Perl语言学习之数组(Arrays)

0300cdfa5a317e7d389c02f1f2a4787c.png
这样平凡的日子,柔软又宁静。迎日出,接晚霞,仿佛这就是生活该收敛的地方。可是,总觉得少了点什么?是奋斗么?

Perl语言中的array变量是包含任意数量元素的有序集合。数组中的每个元素都有一个非负整数的索引(index)。

Perl数组是动态的,其不需要在数组变量声明时指定内存,也不需要指定每个元素的数据类型。

Perl数组元素的值可以是标量、数组、散列、文件句柄和undef等。因此,通过在数组的元素中存储任何数据类型的引用,即可以存储任意复杂的数据结构。

Perl数组可以作为一个堆栈队列列表的方式来使用。

我们可以通过下述方式来声明数组。

# Declare an empty hash
my %hash;
# Declare an arraycontaining a number, a string,
# a reference to a hash and another string.
my @items = (42, 'wombat', %hash, 'hello');

我们可以将数组直接“赋值”为标量变量来获取元素数量,即数组的“长度”或“大小”。

$count =@array;

或者根据$#array来获取数组的最大索引值

$highest_index= $#array;

push和pop分别从数组的结尾压入和弹出数据。

push @array, 8;
$x = pop@array;

unshift 和shift分别从数组的开头压入和弹出数据。

unshift@array, 'y';
$x = shift @array;

也可以直接操作数组中任意位置的数据元素

$first_elem= $array[0];
( $first, $third, $fifth ) = @array[0,2,4];

使用split()函数将字符串转换为数组,如下所示:

#!/usr/bin/perl
#定义字符串
$var_test = "w3big";
$var_string = "www-w3big-com";
$var_names = "google,taobao,w3big,weibo";
#字符串转为数组
@test = split('', $var_test);
@string = split('-', $var_string);
@names  = split(',', $var_names);
print"$test[3]n";
print"$string[2]n"; 
print "$names[3]n";

输出:

i
com
weibo

相应地,可以使用join()函数将数组拼接成字符串。

my @animals = ('dog', 'cat', 'rabbit');
print join(', ', @animals);

输出:

dog, cat, rabbit

在实际应用中,foreach循环是非常强大的数组遍历方式。

my @names = ("Foo","Bar", "Baz");
foreach my $n (@names) {
  say $n;
}

输出:

Foo
Bar
Baz

当然,以上只是一些数组的基本用法,关于Perl语言中数组的操作还有更多非常实用的函数,比如sort,reverse,map

Perl中基本数据类型和自带正则表达式的联合使用,是Perl脚本相对与其他语言进行文本处理的优势之处。

" 愿我们都能在平凡岁月里里活成理想的自己。

相关文章:

  • grib1文件解析 python_在Python中使用JSON
  • concat合并的数组会有顺序么_Javascript中数组方法reduce的妙用之处
  • dqn在训练过程中loss越来越大_物流过程中的仓储风险越来越大,该如何规避?...
  • 关闭运动轨迹_配备业界领先的反射屏 华米Amazfit智能运动手表3评测
  • 克罗地亚第二狂想曲难度_不可能的狼兔cp!剧情好看不靠大尺度,《动物狂想曲》监督专访...
  • sqlserver去重记录_细说SQLServer索引原理
  • python爬虫scrapy安装_Python之Scrapy爬虫框架安装及使用详解
  • echarts 柱状图设置边框_Echarts图表的悬浮框位置的调整
  • nacos修改密码_SpringBoot接入Nacos作为配置中心
  • 中如何调取api_什么是区块头?如何通过区块链API获得区块头信息?| Tokenview
  • oracle 按照时间倒序_oracle的逆序键索引应用!
  • linux 切换cuda版本_linux – 如何更改CUDA版本
  • python dxf matlibplot_python中如何用matlibplot画正弦曲线?
  • npm audit fix什么意思_尝试解决 nvm 1.1.7 无法安装npm
  • mysql cmake_Mysql的cmake编译与安装
  • [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
  • 【React系列】如何构建React应用程序
  • 230. Kth Smallest Element in a BST
  • Django 博客开发教程 16 - 统计文章阅读量
  • HTTP请求重发
  • Java超时控制的实现
  • Java基本数据类型之Number
  • Material Design
  • Next.js之基础概念(二)
  • python_bomb----数据类型总结
  • Service Worker
  • “十年磨一剑”--有赞的HBase平台实践和应用之路 ...
  • 《天龙八部3D》Unity技术方案揭秘
  • 如何正确理解,内页权重高于首页?
  • #HarmonyOS:软件安装window和mac预览Hello World
  • (1)常见O(n^2)排序算法解析
  • (LNMP) How To Install Linux, nginx, MySQL, PHP
  • (二)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (十八)SpringBoot之发送QQ邮件
  • (算法)Game
  • (转)ORM
  • (转载)hibernate缓存
  • .NET 6 在已知拓扑路径的情况下使用 Dijkstra,A*算法搜索最短路径
  • .NET/MSBuild 中的发布路径在哪里呢?如何在扩展编译的时候修改发布路径中的文件呢?
  • .net6解除文件上传限制。Multipart body length limit 16384 exceeded
  • /dev下添加设备节点的方法步骤(通过device_create)
  • [ Algorithm ] N次方算法 N Square 动态规划解决
  • [ CTF ] WriteUp- 2022年第三届“网鼎杯”网络安全大赛(朱雀组)
  • [cocos2d-x]关于CC_CALLBACK
  • [github全教程]github版本控制最全教学------- 大厂找工作面试必备!
  • [GN] 设计模式——面向对象设计原则概述
  • [javaSE] 看知乎学习工厂模式
  • [luoguP3159] [CQOI2012]交换棋子(最小费用最大流)
  • [mmucache]-ARMV8-aarch64的虚拟内存(mmutlbcache)介绍-概念扫盲
  • [NOIP2013]华容道
  • [Notice] 朋友们,blog更新http://jiang-hongfei.spaces.live.com
  • [Pyhton]weakref 弱引用
  • [Ruby] 基础知识
  • [Study]Vue
  • [uni-app] 小程序码转为二维码, 小程序解析此码获取数据