转个贴,有兴趣的看看:)
时间:2011-07-14
来源:互联网
- $str = "hello worlds ab abcdefgh"
- # 转成下面的格式输出
-
- ****
- ****
- ** *
- ** *
- ** *
- * * #这行应该向右挪一个位置
- *
- *
-
- # 要求就是把$str的字符串全部替换为*,然后每个单词做个翻转。(上面的格式有些问题,可以运行下面我的代码看下)
我的代码:
- #!/bin/perl
- use strict;
-
- my $str = "hello worlds ab abcdefgh";
- my @a;
- my $q=0;
- my $p;
- my $n=0;
- my $v;
- my %o;
-
- @a=split (/ /,$str);
-
- foreach (@a){
- my @w=split(/x*/,$_);
- ++$q;
- $p=0;
- foreach (@w){
- $o{$q}{++$p}=$_;
- }
- $n=$n>$p?$n:$p
- };
-
- for(my $i=1;$i<=$n;$i++){
- for(my $j=1;$j<=$q;$j++){
- $v=(exists($o{$j}{$i})?$o{$j}{$i}:" ");
- $v=~s/\w/*/;
- print $v;
- }
- print "\n";
- }
作者: yinyuemi 发布时间: 2011-07-14
作者: kgdvoso 发布时间: 2011-07-14
作者: 2gua 发布时间: 2011-07-14
瓜兄是有兴趣呢?还是有兴趣呢?呵呵!
我只是抛砖引玉, 想看到大佬们更简洁的方法
作者: yinyuemi 发布时间: 2011-07-14
- use 5.012;
-
- my $str = "hello worlds ab abcdefgh";
-
- $str =~ s/\w/\*/g;
-
- my @a = split /\s+/, $str;
-
- my $cond = 1;
- while ($cond) {
- $cond = 0; # 全部字段都结束就退出
- for (@a) {
- my $c = chop;
- $cond = 1 if $c ne '';
- print ($c eq '' ? ' ' : $c);
- }
- say '';
- }
作者: zhlong8 发布时间: 2011-07-14
作者: zhlong8 发布时间: 2011-07-14
回复 zhlong8
感谢斑竹,虽然我没有5.012 的环境,不过,这个思路绝对是值得学习的,这个while用的太帅了

作者: yinyuemi 发布时间: 2011-07-14
我也不懂这个是干嘛的,从别地儿看到的,就贴到这里了
作者: yinyuemi 发布时间: 2011-07-14
感谢斑竹,虽然我没有5.012 的环境,不过,这个思路绝对是值得学习的,这个while用 ...
yinyuemi 发表于 2011-07-14 09:47
就用了个 say ''; 打印个换行
作者: zhlong8 发布时间: 2011-07-14
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28