我正在编写Perl类以从脚本中删除冗余,因为Perl有很多方法让我不断地让课程正常进行.有没有人有一个类的最佳实践示例?
我最大的问题是如果一个模块中不应该有全局变量,你如何在一个模块中的sub()中使用变量?像Java自己> foo = 10;
基本上只是给我一个用Java或C#编写的类,甚至是C,并在Perl中写同一个.另外还要显示如何正确地执行私有,受保护和公共类变量.继承和接口对我有帮助.
解决方法
创建Perl对象的典型方式是“保佑”一个hashref.然后,对象实例可以根据自己的一组散列键存储数据.
package SampleObject; use strict; use warnings; sub new { my ($class,%args) = @_; return bless { %args },$class; } sub sample_method { my ($self) = @_; print $self->{sample_data}; }
和用法:
my $obj = SampleObject->new( sample_data => 'hello world',more_data => 'blah blah blah' ); $obj->sample_method();
或者,可以添加访问器/ mutator方法(参见Class :: Accessor,Class :: Accessor :: Chained等,以便轻松设置这些) – 这些使得更容易验证数据和添加封装(它不是在Perl,您必须确保您的代码不会绕过适当的访问器/ mutator,并直接访问祝福的hashref中的数据).