123
分类: PERL
2015-04-24 14:40:59
安装完了perl-Gtk2后,我在百度上找到一篇关于perl-Gtk2编程的文件,网址是:http://www.ibm.com/developerworks/cn/linux/l-perlgtk/。在里面看到helloword.pl代码,代码内容如下: #!/usr/bin/perl use Gtk2; use Encode qw/ encode decode /; ##加载encode模块,用来对中文编码 Gtk2 -> init; ##Gtk+程序初始化 my $win = Gtk2::Window -> new ( ); ##建立一个新的窗口 $win -> set_title ( 'Hello world program' ); ##设置窗口的标题 $win -> set_size_request ( 320,240 ); ##设置窗口的大小为320 240 $win -> signal_connect ( destroy => sub { Gtk2 -> main_quit; } ); ##设置程序退出信号 my $word = "Hello world\n".decode ( "euc-cn",'这是你的第一个Gtk2-perl程序。' ); ##在屏幕几的中央写的文字,中文需要utf8编码 my $label = Gtk2::Label -> new ( $word ); ##新建一个标签组件 $win -> add ( $label ); ##在窗口中添加这个标签组件 $win -> show_all; ##显示窗口中的所有元素 Gtk2 -> main; ##开始主循环 运行:perl helloword.pl 后的结果如下: 如上截图,运行结果有乱码。问题出在哪呢?细看代码,问题应该出在如下代码中: my $word = "Hello world\n".decode ( "euc-cn",'这是你的第一个Gtk2-perl程序。' ); 把"euc-cn"换成"utf8"后,再次运行,发现中文显示正常了。如下截图: 以下是修改后的完整代码: 1 #!/usr/bin/perl 2 3 use Gtk2; 4 use Encode qw/ encode decode /; ##加载encode模块,用来对中文编码 5 Gtk2->init; ##Gtk+程序初始化 6 my $win = Gtk2::Window->new(); ##建立一个新的窗口 7 $win->set_title ( 'Hello world program' ); ##设置窗口的标题 8 $win->set_size_request ( 320,240 ); ##设置窗口的大小为320 240 9 $win->signal_connect ( destroy => sub { Gtk2->main_quit; } ); ##设置程序退出信号 10 my $word = "Hello world\n".decode( "utf8",'这是你的第一个Gtk2-perl程序。' ); 11 ##在屏幕几的中央写的文字,中文需要utf8编码 12 my $label = Gtk2::Label->new ( $word ); ##新建一个标签组件 13 $win->add( $label ); ##在窗口中添加这个标签组件 14 $win->show_all; ##显示窗口中的所有元素 15 Gtk2->main; ##开始主循环 下面分析整个程序的结构: 第一行是声明脚本所用的解析器/usr/bin/perl; 第三、四行是两条use语句用于加载Gtk2和Encode模块; 第五行初始化Gtk程序; 第六行创建一个窗口实例; 第七到九行是设置窗口的各种属性; 第十行是创建一个字符串实例; 第十二行用第十行的字符串实例创建一个标签实例; 第十三行把标签实例加到窗口实例; 第十四行显示窗口实例的所有元素; 第十五行开始主循环。 整个程序的结构可以总结为:加载Gtk2模块,初始化Gtk程序,创建窗口或对话框等对象实例,设置实例的各种属性,将各种图形化组件实例增加到窗口或对话框,显示窗口或对话框实例的所有元素,开始主循环。