一个小问题
时间:2011-03-18
来源:互联网
请高手指教,我有一个文档,我需要从中找到一些东西然后把我找到的这些东西从中取出放到另一个文档中,原文档中不能再含有我已经找到的那些东西,该用什么命令啊?谢谢!
比方说:@list = (tomatoes, tomorrow, potatoes, phantom, Tommy);我需要匹配tom的单词并把他们放在另外一个数组中,而且@list中不再含有这些单词。
作者: 超级细菌 发布时间: 2011-03-18
遍历@list,把匹配tom的单词放到@a中,不匹配的放到@b中,然后@list = @b
作者: 珞水的大叔 发布时间: 2011-03-18
这个思路是不错,但觉得有点麻烦,不过还是谢谢了!
作者: 超级细菌 发布时间: 2011-03-18
作者: 珞水的大叔 发布时间: 2011-03-18
那么该如何把值设为undef呢?
作者: 超级细菌 发布时间: 2011-03-18
楼主可以顺着自己的思路往下考虑
你想要的命令是:@array2 = my_command(/PATTERN/, @array);
你可以到http://perldoc.perl.org/index-functions.html这里去找你的“命令”,看看有没有一样的或是相似的。
看着挺多,大概浏览一下,有个1,2十分钟就好了。如果找到了也省得发贴问了,没找到就说明没有,老老实实循环去。
作者: py 发布时间: 2011-03-18
如
- $list[2] = undef;
作者: 珞水的大叔 发布时间: 2011-03-18
多谢了!
作者: 超级细菌 发布时间: 2011-03-18
map,grep基本可以满足楼主需要。但楼主还要让原数组去除掉已经匹配的元素。这样的话就只能循环了。
@a = @b;这样的写法效率太低
设置undef不错,然后再用一次List::Util,基本就可以了。
还有一个办法,就是到CPAN上找找楼主要的这个“命令”,看看有没有什么模块支持。要是没有就干脆写一个List::Util::Extra,把这个“命令”加上。
作者: py 发布时间: 2011-03-18

- my @list= qw(tomatoes tomorrow potatoes phantom Tommy);
- my @matched=grep /tom/,@list;
- @list=grep $_!~/tom/,@list;
- print "@matched\n";
- print "@list\n";
作者: xfoucs 发布时间: 2011-03-18
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28