免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4466 | 回复: 11
打印 上一主题 下一主题

遇到一个map使用问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2016-07-02 15:20 |只看该作者 |倒序浏览
@a=("world!","me!");
$aa="hello$1";
map {s/(.*)/$aa/;$_}@a;
print "变量\数组:",@a,"\n";


@a=("world!","me!");
map {s/(.*)/hello$1/;$_}@a;
print "字符串\数组:",@a,"\n";


$a="world!";
$aa="hello$1";
map {s/(.*)/$aa/;$_}$a;
print "变量\变量:",$a,"\n";


$a="world!";
$aa="hello$a";
map {s/(.*)/$aa/;$_}$a;
print "变量=变量:",$a,"\n";


#怎样才能通过类似map {s/(.*)/$aa/;$_}@a;的形式:获得如下结果:

helloworld!hellome!

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
2 [报告]
发表于 2016-07-02 16:58 |只看该作者
为什么不直接进行替换, 而是通过一个复合类型中间变量进行替换. 如: $aa="hello$1"; 有啥特殊目的吗?

论坛徽章:
0
3 [报告]
发表于 2016-07-02 17:34 |只看该作者
本帖最后由 enditman 于 2016-07-02 17:37 编辑

回复 2# sunzhiguolu


确实有原因的:
1、hello $1,其实是很多字符串拼接的,包含多个$1,每个元字符串都事先放在数据库里了,根据另外多个条件取出来拼接而成的
2、希望通过@a赋值后,以@a的个数,执行多条上面拼接并赋值的语句。
3、我也尝试了使用foreach,可是,依旧不能赋值,我接触开发时间不长,既不知其然,也不知其所以然,汗!!!!!望指点!

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
4 [报告]
发表于 2016-07-02 17:59 |只看该作者
回复 3# enditman
hello $1,其实是很多字符串拼接的,包含多个$1,每个元字符串都事先放在数据库里了,根据另外多个条件取出来拼接而成的

$1 的值不能事先确定下来, 只能通过捕获组动态的确定下来吗?

   

论坛徽章:
0
5 [报告]
发表于 2016-07-02 18:19 |只看该作者
本帖最后由 enditman 于 2016-07-02 18:43 编辑

回复 4# sunzhiguolu


   是的,是用户从前台表单随机选的

希望简洁,看来行不通了,只好用for循环一个一个取出并定义变量,然后再试一下能不能赋值了,感谢你的恢复,虽然没有获得想知道的答案,但令人感到温暖哦

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
6 [报告]
发表于 2016-07-02 19:06 |只看该作者
不好意思啊, 我的水平有限, 哪位大神能指点一下 这种问题从何处着手处理. 小白一枚, 不懂帮顶!!!

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
7 [报告]
发表于 2016-07-02 21:10 |只看该作者
回复 1# enditman
利用过程代码看下能否完成你的要求, 如果不行, 咱们再一起探讨, 一起学习.

  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;

  4. foreach (("world!", "me!")){
  5.     if (/(.*)/){
  6.         my $regex = "hello$1";
  7.         (my $str = $_) =~ s/$1/$regex/;
  8.         print "$str\n";
  9.     }
  10. }
复制代码
perl a.pl
--------------------------
helloworld!
hellome!


   

论坛徽章:
307
程序设计版块每周发帖之星
日期:2016-04-08 00:41:33操作系统版块每日发帖之星
日期:2015-09-02 06:20:00每日论坛发贴之星
日期:2015-09-02 06:20:00程序设计版块每日发帖之星
日期:2015-09-04 06:20:00每日论坛发贴之星
日期:2015-09-04 06:20:00每周论坛发贴之星
日期:2015-09-06 22:22:00程序设计版块每日发帖之星
日期:2015-09-09 06:20:00程序设计版块每日发帖之星
日期:2015-09-19 06:20:00程序设计版块每日发帖之星
日期:2015-09-20 06:20:00每日论坛发贴之星
日期:2015-09-20 06:20:00程序设计版块每日发帖之星
日期:2015-09-22 06:20:00程序设计版块每日发帖之星
日期:2015-09-24 06:20:00
8 [报告]
发表于 2016-07-02 21:16 |只看该作者
本帖最后由 sunzhiguolu 于 2016-07-02 21:23 编辑

如果不能满足你的要求, 拿出几个比较说明问题的示例数据再来.

论坛徽章:
0
9 [报告]
发表于 2016-07-02 21:41 |只看该作者
回复 1# enditman


   没看明白什么意思

论坛徽章:
0
10 [报告]
发表于 2016-07-03 08:07 |只看该作者
回复 8# sunzhiguolu

厉害,高人。

情况稍有些不同,我的那串有$1de 的字符串,来自数据库,还有单引号的影响。
增加一句处理单引号,通过!


    #!/usr/bin/perl
    use strict;
    use warnings;



my @aaa;
@aaa=("world!", "me!");
    foreach (@aaa){
        if (/(.*)/){
            my $regex = 'hello$1';  # 单引号影响
                my $regex = eval "\"$regex\""; # eval一下

            (my $str = $_) =~ s/$1/$regex/;
            print "$str\n";
        }
    }





   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP