免费注册 查看新帖 |

Chinaunix

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

急请教,用perl移植DOS窗口问题,万谢!!! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-03-04 13:06 |只看该作者 |倒序浏览
想用perl 或者 perl Tk 将DOS窗口里实时显示的数据  移植到其它页面,让其实时显示;
或者这样说,我现在用perl Tk做一个平台,它需要实时滚动显示DOS窗口里的内容,急求方法!万分感谢!

论坛徽章:
46
15-16赛季CBA联赛之四川
日期:2018-03-27 11:59:132015年亚洲杯之沙特阿拉伯
日期:2015-04-11 17:31:45天蝎座
日期:2015-03-25 16:56:49双鱼座
日期:2015-03-25 16:56:30摩羯座
日期:2015-03-25 16:56:09巳蛇
日期:2015-03-25 16:55:30卯兔
日期:2015-03-25 16:54:29子鼠
日期:2015-03-25 16:53:59申猴
日期:2015-03-25 16:53:29寅虎
日期:2015-03-25 16:52:29羊年新春福章
日期:2015-03-25 16:51:212015亚冠之布里斯班狮吼
日期:2015-07-13 10:44:56
2 [报告]
发表于 2011-03-04 13:47 |只看该作者
open STDOUT 可以改变标准输出

论坛徽章:
0
3 [报告]
发表于 2011-03-04 14:10 |只看该作者
回复 2# zhlong8


    这个我以前用过,当时是把输出重定向到一个文本,然后再去读这个文本,可是不能 实时的 像DOS窗口里一样自己 滚动显示啊? 有什么方法可以做到吗? 谢谢!

论坛徽章:
46
15-16赛季CBA联赛之四川
日期:2018-03-27 11:59:132015年亚洲杯之沙特阿拉伯
日期:2015-04-11 17:31:45天蝎座
日期:2015-03-25 16:56:49双鱼座
日期:2015-03-25 16:56:30摩羯座
日期:2015-03-25 16:56:09巳蛇
日期:2015-03-25 16:55:30卯兔
日期:2015-03-25 16:54:29子鼠
日期:2015-03-25 16:53:59申猴
日期:2015-03-25 16:53:29寅虎
日期:2015-03-25 16:52:29羊年新春福章
日期:2015-03-25 16:51:212015亚冠之布里斯班狮吼
日期:2015-07-13 10:44:56
4 [报告]
发表于 2011-03-04 14:29 |只看该作者
本帖最后由 zhlong8 于 2011-03-04 14:33 编辑
回复  zhlong8


    这个我以前用过,当时是把输出重定向到一个文本,然后再去读这个文本,可是不能 实 ...
433309 发表于 2011-03-04 14:10



    可以用 tie 的 TIEHANDLE 把 print 等一系列输出函数重定义,改成调用相应的 Tk 模块的代码。perltie 上有这么个例子,只要把 tie *FOO 改成 tie *STDOUT 就可以了
  1.     tie(*FOO,'Shout');
  2.     print FOO "hello\n";
  3.     $a = 4; $b = 6;
  4.     print FOO $a, " plus ", $b, " equals ", $a + $b, "\n";
  5.     print <FOO>;
复制代码

论坛徽章:
0
5 [报告]
发表于 2011-03-07 10:32 |只看该作者
回复 4# zhlong8


    不好意思 我算是新手 没怎么弄懂  还不知道怎么“ 把 print 等一系列输出函数重定义”。可以解释详细点吗 非常感谢你的帮助!

论坛徽章:
46
15-16赛季CBA联赛之四川
日期:2018-03-27 11:59:132015年亚洲杯之沙特阿拉伯
日期:2015-04-11 17:31:45天蝎座
日期:2015-03-25 16:56:49双鱼座
日期:2015-03-25 16:56:30摩羯座
日期:2015-03-25 16:56:09巳蛇
日期:2015-03-25 16:55:30卯兔
日期:2015-03-25 16:54:29子鼠
日期:2015-03-25 16:53:59申猴
日期:2015-03-25 16:53:29寅虎
日期:2015-03-25 16:52:29羊年新春福章
日期:2015-03-25 16:51:212015亚冠之布里斯班狮吼
日期:2015-07-13 10:44:56
6 [报告]
发表于 2011-03-07 11:29 |只看该作者
回复 5# 433309


    懂 Perl 的OO的前提下可以看下你学习的书的 tie 的部分,或者直接看 perltie 。效果就是所有向 STDOUT 的输出都被替换成了你定义的函数

论坛徽章:
0
7 [报告]
发表于 2011-03-07 21:34 |只看该作者
回复 6# zhlong8


学习了大半天还是没能搞出来...
假设我的TK代码如下(一个简单的文本界面),可以帮我 把用 tie 把输出函数 重定义的 代码加进去吗? 让它实现 STDOUT 在这个 文本界面 中实时显示吗?我实在是没办法了。谢谢!

#!/usr/bin/perl -w
use Tk;
use encoding "gb2312";
my $mw = MainWindow->new;
$mw->geometry("200x100");

my $s = $mw->Scrollbar();
$s->pack(-side=>"right", -expand => "no", -fill => "y");
my $m = $mw->Text(-yscrollcommand => ['set', $s],
                           )->pack(-side => "left", -anchor => "w", -expand => "yes", -fill => "both");
$m ->insert ('0.0', "只有请hlong8帮忙了");


MainLoop;

MainLoop;

论坛徽章:
46
15-16赛季CBA联赛之四川
日期:2018-03-27 11:59:132015年亚洲杯之沙特阿拉伯
日期:2015-04-11 17:31:45天蝎座
日期:2015-03-25 16:56:49双鱼座
日期:2015-03-25 16:56:30摩羯座
日期:2015-03-25 16:56:09巳蛇
日期:2015-03-25 16:55:30卯兔
日期:2015-03-25 16:54:29子鼠
日期:2015-03-25 16:53:59申猴
日期:2015-03-25 16:53:29寅虎
日期:2015-03-25 16:52:29羊年新春福章
日期:2015-03-25 16:51:212015亚冠之布里斯班狮吼
日期:2015-07-13 10:44:56
8 [报告]
发表于 2011-03-07 21:53 |只看该作者
回复 7# 433309


    没用过 Tk 只能写个大概框架了
#!/usr/bin/perl -w

use strict;
use Tk;
use encoding "gb2312";

package My_echo;

sub TIEHANDLE {
    my($class, $tk) = @_; # $tk 即你的 Text 对象
    bless \$tk, $class;
}

sub PRINT {
    my $self = shift;
    $$self->set_label(@_); # bla bla bla
}

#PRINTF ...

package main;

my $mw = MainWindow->new;
# make a label $label
tie *STDOUT, 'My_echo', $the_label;

#bla bla bla

MainLoop;

论坛徽章:
0
9 [报告]
发表于 2011-03-10 11:04 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP