设为首页
收藏本站
用户名
Email
自动登录
找回密码
密码
登录
注册
快捷导航
平台
Portal
论坛
BBS
文库
项目
群组
Group
我的博客
Space
搜索
搜索
热搜:
shell
linux
mysql
本版
用户
LinuxSir.cn,穿越时空的Linuxsir!
»
论坛
›
编程开发讨论区 —— LinuxSir.cn
›
Perl
›
perl入门教程的一个习题疑惑!
返回列表
查看:
1994
|
回复:
6
perl入门教程的一个习题疑惑!
[复制链接]
suxingwakeup
suxingwakeup
当前离线
积分
7
IP卡
狗仔卡
发表于 2009-12-29 18:22:03
|
显示全部楼层
|
阅读模式
题目为将文件中的fred变成larry ,文件中的larry变种fred 也就是 fredandlarry将变成 larryandfred。
答案给定为:
$^I=‘.out’;
while(<>){
unless(s/fred/larry/gi){
s/larry/fred/gi;
}
我的疑问是当文件中的一行存在fredandlarry,那么s/fred/larry/gi将返回正确,则不会执行s/larry/fred/gi。是不是最终fredandlarry将变成larryandlarry呢?
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
显身卡
yzhkpli
yzhkpli
当前离线
积分
164
IP卡
狗仔卡
发表于 2009-12-29 22:06:52
|
显示全部楼层
看不懂。。。。。
回复
支持
反对
使用道具
举报
显身卡
ziyang
ziyang
当前离线
积分
901
IP卡
狗仔卡
发表于 2009-12-31 12:20:36
|
显示全部楼层
我的疑问是当文件中的一行存在fredandlarry,那么s/fred/larry/gi将返回正确,则不会执行s/larry/fred/gi。是不是最终fredandlarry将变成larryandlarry呢?
============
是的
回复
支持
反对
使用道具
举报
显身卡
suxingwakeup
suxingwakeup
当前离线
积分
7
IP卡
狗仔卡
楼主
|
发表于 2010-1-4 16:19:16
|
显示全部楼层
请问大侠 怎么才能达到让他们互换的效果呢。
回复
支持
反对
使用道具
举报
显身卡
iamkr
iamkr
当前离线
积分
478
IP卡
狗仔卡
发表于 2010-1-5 00:14:03
|
显示全部楼层
fred变\fred
larry变fred
\fred变larry
回复
支持
反对
使用道具
举报
显身卡
tandkzy
tandkzy
当前离线
积分
66
IP卡
狗仔卡
发表于 2010-3-10 23:44:11
|
显示全部楼层
这里不能直接用正则式替换。
你的意思是让larry和fred互换。所以我们可以这么干:
$line;#假设这是你的行变量。
my @par = split /larry/,$line;
foreach (@par){
$_ =~ s/fred/larry/gi;
}
$line = join /fred/,@par;
先用larry作为标准把你获得的行拆开,再逐个替换其中的fred为larry,然后再用fred作胶水把替换过后的数组粘到一起,这样就可以了。(代码未经验证,并不代表可以上机执行)
回复
支持
反对
使用道具
举报
显身卡
chasye
chasye
当前离线
积分
138
IP卡
狗仔卡
发表于 2010-3-21 22:52:20
|
显示全部楼层
perl -p -e "s/fred/=##=/g; s/larry/fred/g; s/=##=/larry/g"
开始前先看看里面有没有"=##="
回复
支持
反对
使用道具
举报
显身卡
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
注册
本版积分规则
发表回复
回帖后跳转到最后一页
Copyright © 2002-2023
LinuxSir.cn
(http://www.linuxsir.cn/) 版权所有 All Rights Reserved.
Powered by
RedflagLinux!
技术支持:
中科红旗
|
京ICP备19024520号
快速回复
返回顶部
返回列表