perl中的map和grep

map

语法:

map EXPR, LIST

map BLOCK, LIST

语义:

对于LIST中的每个元素执行EXPR或者BLOCK,如果返回值存储在list中,则表示处理后的list,若返回值存储在scalar中,则表示处理后的list中元素个数。下面是几个例子.

单词首字母大写

sub test {
my @names = (
'jacob',
'alexander',
'ethan',
'andrew',
);

my @new_names = map(ucfirst, @names);

foreach my $name (@new_names) {
print $name, "\n";
}
}

打印数组元素

print 相当于 print $_

my @row_ary = (1, 3, 'abc', undef, 12, 'ddd', undef, undef) ;
map { print } @row_ary;

替换数组元素

对于数组中每个元素,如果其值是undef,那么将其替换位x。

my @row_ary = (1, 3, 'abc', undef, 12, 'ddd', undef, undef) ;
map { $_='x' unless $_ } @row_ary;

grep

grep的语法格式与map完全一样,不过grep是通过判断列表中每个元素是否满足表达式或者块来返回true和false,再根据true和false来决定最终的返回列表。所以grep多时用来过滤元素用的。

一个例子,找出一组单词中的纯数字单词,如下。

sub test {
my @words = (
'hello',
'123',
'B51',
'123abc',
'8',
);

my @numbers = grep { /^\d+$/ } @words

取数组中下标为奇数的元素

my @nums = (2, 1, 3, 5, 4, 6);
my @odd = @nums[grep { $_ & 1 } 0..$#nums];

@odd中值分别是1,5,6

分析,$#nums表示数组nums最后一个元素的下标,grep { $_ & 1} 取奇数下标,@nums[]取下标为奇数的元素。



==

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/267431.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

图片压缩

1)一张图片如何显示到屏幕上 一个电脑显示器, 上面的像素点就是内存/显存一张图片表达的颜色信息赋值到那块内存就是图片显示2)图片文件的格式 图片文件的格式,无论是哪一种,最终都要包含原始颜色数据 原始颜色数据 一个像素用rgb…

python io操作需要用到什么硬件_Python I/O 操作(一)

一、I/O 概念I/O 指的是相对内存而言的 input 和 output从文件、数据库、网络向内存中写入数据叫做 input从内存向文件、数据库、网络中输出数据叫做 outputI/O 操作相比 CPU 操作而言是极慢的,往往 CPU 运行一秒钟,I/O 要忙几个月,所以要提高…

fortinate防火墙使用本地用户三步开通PPTP ***

1. 建立用户Local用户及用户组 2. 启用PPTP ***拨号功能 3. 建立***地址,并设置策略:让***用户可以访问内部和外部 (注:建***地址和策略时,接口选择是外部,因为是外部拨入的) 完成上述三步&…

李国浩20179307第二周作业

人物介绍 国内知名黑客: 吴翰青:阿里云首席安全科学家、云盾负责人,也是网络安全领域为人熟知的“刺”、“道哥”和“小黑”。他要想黑谁家的网站,别说企业、医院,银行都要彻夜难眠。但小黑是白帽子,黑客最…

rust windows 交叉编译_交叉编译和静态链接 RUST 库

在 CSIS 中,我们过去使用 Python 编写后端,同时为 Incident Response Toolkit 编写一些 C/C 代码。几年前,主要是由于性能原因,我们开始用 Rust 替换 Python 重写了一些特定的后端服务,并取得了巨大的成功。现在&#…

转lua解释执行脚本流程

本文转自&#xff1a;http://www.cnblogs.com/zxh1210603696/p/4458473.html #include "lua.hpp"#include <iostream> using namespace std;#pragma comment(lib, "lua5.1.lib")struct lua_guard{lua_State *pL;lua_guard(lua_State *s) :pL(s){}~lu…

about hamout cloudra

http://running.iteye.com/?page3

(转)PowerHA完全手册(一,二,三)

PowerHA完全手册&#xff08;一&#xff09; 原文&#xff1a;http://www.talkwithtrend.com/Article/39889-----PowerHA完全手册&#xff08;一&#xff09; http://www.talkwithtrend.com/Article/40117---PowerHA完全手册&#xff08;二&#xff09; http://www.talkwithtre…

dial up network

dial up network 通过电话线拨号上网的网络系统

事件处理 java_Java事件处理的4种方法

第一种 自身类作为事件监听器import javax.swing.*;import java.awt.*;import java.awt.event.*;/***Java事件处理机制:自身类作为事件监听器*author Winty(wintysgmail.com)*version 2008-12-3*/class ThisClassEvent extends JFrame implements ActionListener{JButton btn;p…

新浪微博推出具有中国特色的“关注但屏蔽”功能

关注一个人&#xff0c;又偷偷屏蔽他&#xff0c;这项功能有人称之“虚伪”&#xff0c;有人称之“贴心”。 请听题&#xff0c;如何礼貌地回答熟人的这个问题&#xff1a;“你为什么取消了微博上对我的关注&#xff1f;”相信这是很多玩微博的人都会遇到的问题&#xff0c;取消…

linux shell 脚本个人规范总结

一、shell 语句格式 linux shell有一套自己的流程控制语句&#xff0c;其中包括条件语句(if)&#xff0c;循环语句(for,while)&#xff0c;选择语句(case)。下面我将通过例子介绍下&#xff0c;各个语句使用方法。 1.1、if语句结构[if/then/elif/else/fi] if 条件测试语句 then…

java循环基础知识_java基础知识—循环结构

1.while 循环语法&#xff1a;while(循环操作){循环操作&#xff1b;}特点:先判断&#xff0c;再执行&#xff1b;2. &#xff1a;用于数字比较 比较的是地址equals: 用于字符串比较 比较的是字符3.do-while语法&#xff1a;do{循环操作&#xff1b;}while(循环条件)&#xff…

android文件读写

public class service { private Context context;//引入上下文对象&#xff0c;要使用其中的方法openFileOutput public service(Context context) { super(); this.context context; } public void save(String filename,String content)throws Exception//抛出异…

接口的声明

C#中咩有多继承&#xff0c;为了解决多继承接口 什么是接口   接口可以理解为对一组方法声明进行统一命名&#xff0c;但是这些方法没有提供任何实现&#xff0c;也就是说&#xff0c;吧一组方法声明在一个接口中 然后继承于该接口的类都需要实现这些接口。 注意&#xff1a;…

C51编程在不同内存空间(data xdata bdata)定义变量的注意事项

1、data区空间小,所以只有频繁用到或对运算速度要求很高的变量才放到data区内,比如for循环中的计数值。 2、data区内最好放局部变量。 因为局部变量的空间是可以覆盖的&#xff08;某个函数的局部变量空间在退出该函数是就释放,由别的函数的局部变量覆盖&#xff09;,可以提高内…

java 类调用情况_java 如何调用类?情况如下

本人目录如下&#xff1a;在surge目录下有一个java文件想创建一个LBChart2DFrameDemo对象&#xff0c;不知道如何创建&#xff1f;。注意&#xff1a;LBChart2DFrameDemo使用了Chart2D.jar包中内容。这个目录ClsChart2D尚未加在...本人目录如下&#xff1a;在surge目录下有一个…

BZOJ1085: [SCOI2005]骑士精神

【传送门&#xff1a;BZOJ1085】 简要题意&#xff1a; 有一个5*5的棋盘&#xff0c;棋盘上有12个白棋子&#xff0c;12个黑棋子&#xff0c;和一个空格&#xff0c;每只棋子只能按照马走日的规则移动&#xff0c;求出最少步数达到以下状态 题解&#xff1a; DFSA* DFS很容易做…

猎豹网校 java_猎豹网校Java 零基础入门 JAVA基础视频教程(精制)

00.NetBeans_下载和安装.mp4 01.Java_语言概述.mp402.Java标识符和关键字.mp403.Java_变量和基本数据类型.mp404.Java_简单数据类型转换和类包装.mp405.Java_算术运算符表达式.mp406.Java_关系运算符和逻辑运算符.mp407.Java_位_赋值_条件运算符.mp408.Java_基本语句和跳转语句…

获取实体表相关信息

ClassMetadata meta session.getSessionFactory().getClassMetadata(clazz);//实体名称String entityName meta.getEntityName();//主键名称String pkName meta.getIdentifierPropertyName();转载于:https://blog.51cto.com/javaworker/736018