[问题] 输入算符<>

楼主: k82817 (ken)   2016-10-07 10:58:50
各位PERL版的大大,大家好
小弟在一个礼拜前刚开始接触PERL这个程式语言
目前是透过看书+网络自学的方式
在看PERL学习手册的第六章_基本IO时
有一段再介绍输入算符,以下为原文
=====================================
例如,有个程式叫做kitty,其内容如下
#!/usr/bin/perl
while(<>){
print $_;}
然后我门执行
kitty file1 file2 file3
此时kitty会一行行地读入file1的内容,接着file2 file3,直到file3的最后一行读完,
<>会传入undef的内容,跳出循环。
=======================================
这段话的意思应该是在执行程式后,在Command Line中打入kitty file1 file2 file3后
程式会显示出file1,file2和file3的内容对吧?
可是我在实际测试时,却只会重复我的输入内容,像是这样
http://imgur.com/a/xUZ0N
完全不会显示test.txt的内容阿
可是如果我用open()的方式就能够顺利开启档案
例如:
open(open_file,"test.txt");
while(<open_file>)
{
print $_;}
难道不能透过command line去指定想要开起哪个档案吗?
电脑是用win7,开发环境用Padre,the Perl IDE
作者: rxiang (rxiang)   2016-10-07 13:00:00
你使用 perl string.pl file 看看
作者: abliou (愚者)   2016-10-07 13:00:00
你的执行方式还蛮特殊的,可以说一下你怎么执行perl?
楼主: k82817 (ken)   2016-10-07 13:07:00
我是用Padre里面的run scriptrx大 还是不行耶,她只会重复我打进去的命令
作者: abliou (愚者)   2016-10-07 13:45:00
原作可能有点误会一楼的意思,不过如果你用run script我想九成是因为后面的参数没有进去,因为你说的症状确实很像我也可以重复你说的症状 http://imgur.com/a/kCHNM所以建议你如果要CMD传参数进去,最好的测试方法就是开CMD不要用内建的run script (除非你会调整)
作者: flu (Crazy Rhythm)   2016-10-07 16:08:00
回复的各位大大请注意看原po 22~24行的原文再加上他图中两行两行一样的内容,推测原po是在cmd等待stdin的时候打入了大大们以为是用命令列引数传入的字串( 上面的cmd改成perl.exe会准确一点 )
作者: abliou (愚者)   2016-10-07 16:53:00
是啦!!就是f大说的那意思!
楼主: k82817 (ken)   2016-10-07 20:37:00
所以说这个范例的程式码打出来的话,功能并不是我想的那我原本以为命名提示字符上会显示TESTTXT的内容
作者: rxiang (rxiang)   2016-10-07 21:03:00
可以显示阿
楼主: k82817 (ken)   2016-10-07 21:09:00
作者: rxiang (rxiang)   2016-10-07 21:10:00
https://goo.gl/4igQG9 我帮你用cmd印出结果
楼主: k82817 (ken)   2016-10-07 21:11:00
我后来用Parde里面的Run command就可以顺利读到档案了
作者: rxiang (rxiang)   2016-10-07 21:13:00
建议别太依赖IDE 用cmd或是Linux里也内建Perl可用CLI处理
楼主: k82817 (ken)   2016-10-07 21:17:00
谢谢RX大 我想大概是因为用run script的关系所以才没办法原来如此 我刚刚用了RX大的方法也成功叫出test.txt档案因为我长期写程式都是使用IDE 所以才会搞不清楚怎么怎么使用command去呼叫程式
作者: rxiang (rxiang)   2016-10-07 21:24:00
建议学CLI 可避免妳下次学新语言又要重学一个IDE的使用
楼主: k82817 (ken)   2016-10-07 23:01:00
好喔

Links booklink

Contact Us: admin [ a t ] ucptt.com