免费注册 查看新帖 |

Chinaunix

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

新手问题,关于printf [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-02-19 15:37 |只看该作者 |倒序浏览
perl 中的printf怎么输出双引号。。
比如awk中的, printf( \"123\");
还有perl中使用printf有没有一行书写的长度限制,awk是399个字节。。。。谢谢

论坛徽章:
0
2 [报告]
发表于 2008-02-19 16:38 |只看该作者
sh-3.2# perl -e 'print qq!hello "girl"\n!'
hello "girl"
sh-3.2# perl -e 'print "hello \"girl\"\n"'
hello "girl"


printf书写长度好像没什么限制

论坛徽章:
0
3 [报告]
发表于 2008-02-19 16:41 |只看该作者

回复 #1 小菜9527 的帖子

#!/usr/bin/perl

use strict;
use warnings;

printf "%11s\n","\"gaochong\"";



长度限制我不确定.期待各位回答。

[ 本帖最后由 gaochong 于 2008-2-19 16:42 编辑 ]

论坛徽章:
0
4 [报告]
发表于 2008-02-19 17:18 |只看该作者

回复 #1 小菜9527 的帖子

还有perl中使用printf有没有一行书写的长度限制,awk是399个字节

perl应该是没有的。因为perl的哲学就是不加任何的限制。比如字符串长度等。
所以确定没有!^_^ 你认为呢?

论坛徽章:
0
5 [报告]
发表于 2008-02-19 17:36 |只看该作者
谢谢楼上的各位了。不过我要实现的是
#! /usr/bin/perl
open(MYFILE,"tt.txt";
while(<MYFILE>
{
    printf "%s,%s\n","\"substr($_,0,1)\"","substr($_,1,2)";
}
close (MYFILE);

把12345这样的buf转换成,“1”,“2”,“345”之类的东西,源文件和准换后的文件行数列数是一样的。唯一的区别是格式不同。
只是觉得awk的语法太丑陋了。所有想学着用perl了。
那个printf 有大约100个%s,这样的话就要有200个这样的\"东西。。。。有没有更好的办法呢?
另外按照我写的格式,substr都输出了不知道怎麽改法呢

[ 本帖最后由 小菜9527 于 2008-2-19 17:39 编辑 ]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
6 [报告]
发表于 2008-02-19 18:40 |只看该作者
unpack 就可以搞定。

  1. my $str = '12345';
  2. print join ',', map { qq("$_") } unpack( 'a1 a1 a3', $str );
  3. print "\n";
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP