免费注册 查看新帖 |

Chinaunix

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

Windows下的一个问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-08-17 11:55 |只看该作者 |倒序浏览
为啥这段简单的代码我在命令行下用 cat xxx.txt |wc.pl 结果为0(其实就是没捕获到管道传过来的东西),用cat xxx.txt |perl wc.pl 结果就正常捏?

[

E:\code\perl>cat wc.pl
#! /usr/bin/perl -w

use strict;

my $i = 0;
while (<STDIN>) {
    $i++;
}
print $i;

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
2 [报告]
发表于 2007-08-17 12:36 |只看该作者
windows 的问题,和 Perl 无关。
给微软说一下好了。
其实说白了就是文件类型关联解析以后,管道不起作用了。

BTW:你那个程序很经典——我是说犯的错误很经典。
其实只要这样就可以了:
  1. 1 while(<STDIN>);
  2. print $.;
复制代码

论坛徽章:
0
3 [报告]
发表于 2007-08-17 13:12 |只看该作者
我这叫错误吗?顶多不如你写的精炼吧

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
4 [报告]
发表于 2007-08-17 13:32 |只看该作者
原帖由 L0ading 于 2007-8-17 13:12 发表
我这叫错误吗?顶多不如你写的精炼吧

你不承认,那便不是错误了。

论坛徽章:
0
5 [报告]
发表于 2007-08-18 09:56 |只看该作者
flw还是解释一下为什么错了吧,好像很多人都不知道呀。

论坛徽章:
0
6 [报告]
发表于 2007-08-18 14:03 |只看该作者
原帖由 bilbo0214 于 2007-8-18 09:56 发表
flw还是解释一下为什么错了吧,好像很多人都不知道呀。

不够简练,没有善用 Perl 的内部变量,造成执行效率下降:)
不是程序上的错误,而是观念和思路上的理解错误而已。

论坛徽章:
0
7 [报告]
发表于 2007-08-19 12:55 |只看该作者
查了半天,找到一些解释:
The convention 1 while CONDITION is the same as while (CONDITION) { }, but shorter.
Its origins date to when Perl ran the first incredibly faster than the second. While the
second is now almost as fast, it remains convenient, and the habit has stuck. [perl cookbook 1.11]

$.         The current input line number of the last filehandle that was read. Rember that only an explicit close on the filehandle resets the line number.  http://www.kichwa.com/quik_ref/spec_variables.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP