perl能这样处理吗?

perl能这样处理吗?

while(1){
print "please input :\n";
my $line=<>;
chop($line);
if ($line="ok"){
system("tail /root/file");
}
}

本意是想一个无限的while,当达到我要求的时候.在一个新的console下打开一个指定的文件.
请问这个perl可以做到吗?或者要装什么样的mod!
谢谢!
可以实现:

[Copy to clipboard] [ - ]
CODE:
#!/usr/bin/perl

while(1){
        print "please input :\n";
        chomp ($line=<STDIN>);
        if ($line eq "ok"){
                print `tail /etc/passwd`;
                exit;
        }
}

while(<STDIN>){
        chomp;
        system("tail /root/file") if $_ eq "ok";
}
大哥,跟我的要求有点差别呀!
这都是在同一个console下tail的.我是想while(1)接着还是让它走.
tail /etc/passwd在新的console里打开.
因为while这个是一直在循环的.不可以停下来.
在循环中得到一个我指定的值的时候,在一个新的console中打开我要查看的文件!while还是在循环.
谢谢!


QUOTE:
原帖由 mousejsh 于 2008-1-31 16:01 发表
大哥,跟我的要求有点差别呀!
这都是在同一个console下tail的.我是想while(1)接着还是让它走.
tail /etc/passwd在新的console里打开.
因为while这个是一直在循环的.不可以停下来.
在循环中得到一个我 ...

my $child = fork();
die "fail to fork $!" unless defined $child;
然后你用child进程去干你的事情就好了


QUOTE:
原帖由 mousejsh 于 2008-1-31 16:01 发表
大哥,跟我的要求有点差别呀!
这都是在同一个console下tail的.我是想while(1)接着还是让它走.
tail /etc/passwd在新的console里打开.
因为while这个是一直在循环的.不可以停下来.
在循环中得到一个我 ...

把exit去掉可以实现在同一个终端一直循环:

[Copy to clipboard] [ - ]
CODE:
#!/usr/bin/perl

while(1){
        print "please input :\n";
        chomp ($line=<STDIN>);
        if ($line eq "ok"){
                print `tail /etc/passwd`;
        }
}

在新的终端不知道如何做!(注:3楼的方法更好,学习了)

而且新的console你的意思是子shell吧?
console指的是那个黑乎乎的东西
我是在gnome-terminal下运行perl的.所以想用while循环下去.达到一个值的时候,在一个新的gnome-terminal下打开一个文件.因为这个文件很大,所以不可以在当前的gnome-terminal中打开.
fork();
好像也是在同一个gnome-terminal中打开的吧.
它是起一个子进程吧!



QUOTE:
原帖由 churchmice 于 2008-1-31 16:07 发表


my $child = fork();
die "fail to fork $!" unless defined $child;
然后你用child进程去干你的事情就好了

这个是在同一个console下打开.不是在新的窗口中打开的.
use fork to spawn a new process
and try exec "rxvt -e \"tail file\"" in your child process

rxvt can be replaced with any terminal you like