免费注册 查看新帖 |

Chinaunix

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

如何让 cwd的返回值是反斜杠\而不是斜杠/ [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-07-29 12:02 |只看该作者 |倒序浏览
请问,如果想让 cwd的返回值是用的 \ 而不是 /怎么办?
比如:
#! c:\perl\bin
use Cwd;
$a= fastgetcwd;
print $a;
结果是:  c:/temp
但是我想得到 c:\temp  该怎么办?
小生初学乍到。还请指点迷津。

论坛徽章:
0
2 [报告]
发表于 2008-07-29 12:29 |只看该作者
$str =~ tr/\//\\/;

论坛徽章:
0
3 [报告]
发表于 2008-07-29 13:13 |只看该作者
不好意思。
您写的 $str =~ tr/\//\\/;是什么意思?
怎么用啊?
是这样么?
------------------
#! c:\perl\bin
use Cwd;
$a= fastgetcwd;
$str=~ tr/\//\\/;
print $str;

论坛徽章:
0
4 [报告]
发表于 2008-07-29 13:19 |只看该作者
$str = $a;

论坛徽章:
0
5 [报告]
发表于 2008-07-29 13:31 |只看该作者
谢谢!
这回明白了。
应该这样。
#! c:\perl\bin
use Cwd;
$a= fastgetcwd;
$str=$a;
$str =~ tr/\//\\/;
print $str;

我又去看了 tr 的翻译。
The "tr///" operator performs a substitution on the individual characters in a string.

Try running the following Perl program:

   #!/usr/bin/perl -w
   use strict;

   my $text = 'some cheese';
   $text =~ tr/ce/XY/;
   print "$text\n";

What happened to $text?

The result is:
somY XhYYsY

非常感谢您,hitsubunnu !

论坛徽章:
0
6 [报告]
发表于 2008-07-29 14:17 |只看该作者

论坛徽章:
0
7 [报告]
发表于 2008-07-29 17:50 |只看该作者
tr/\//\\/
等价于
s/\//\\/g

不过简洁些,而且5楼的例子表明tr的功能更为强大

学习了

论坛徽章:
0
8 [报告]
发表于 2008-07-29 20:38 |只看该作者
受到启发,以前一个经典的问题应该由这个经典的办法来解决

如何把一个字符串里的a换成b,b换成a

$s="abababab";
$s=~tr/ab/ba/;

就可以,其他解法也有
$s=~s/(a|b)/$1 eq 'a' ?b:a/ge;
也行

但是不如tr来的简洁

论坛徽章:
0
9 [报告]
发表于 2008-07-30 11:00 |只看该作者

回复 #8 hdc1112 的帖子

其实也可以多个同时替换。比如:
$x =~ tr/0-9/QERTYUIOPX/; # Digits to letters.
$x =~ tr/A-Z/a-z/;        # Convert to lowercase.
并且,不一定需要使用 Slash / 作为 delimiter (分隔符)
比如:
  $x =~ tr!xianer!XIANER!;
   $x =~ trianer:XIANER:;

另外, tr还有一些选项。比如 s: 压缩多个重复字符为一个
举例:
------------
#!/usr/bin/perl -w
use strict;
my $text = 'good cheese';
$text =~ tr/oe/ue/s; #注意这里的 s
print "$text\n";
# Output is: gud chese

另一个是 d 选项。用来删除字符。
比如:
--------------
my $big = 'vowels are useful';
   $big =~ tr/aeiou/AEI/d;
   print "$big\n";
   # The first three vowels are made uppercase. The other two, which have no replacement character, are deleted because of the "d".
   #输出结果是: vwEls ArE sEfl

[ 本帖最后由 xianer2 于 2008-7-30 11:05 编辑 ]

论坛徽章:
0
10 [报告]
发表于 2008-07-30 14:40 |只看该作者
同时替换就是它的强大之处,比起s命令来说
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP