在perl中保存音译表
我想用1到8的数字音译为0但在编译时不知道数字。由于音译不插入变量,我这样做:
@trs = (sub{die},sub{${$_[0]} =~ tr/[0,1]/[1,0]/},sub{${$_[0]} =~ tr/[0,2]/[2,0]/},sub{${$_[0]} =~ tr/[0,3]/[3,0]/},sub{${$_[0]} =~ tr/[0,4]/[4,0]/},sub{${$_[0]} =~ tr/[0,5]/[5,0]/},sub{${$_[0]} =~ tr/[0,6]/[6,0]/},sub{${$_[0]} =~ tr/[0,7]/[7,0]/},sub{${$_[0]} =~ tr/[0,8]/[8,0]/});
然后索引它像:
$trs[$character_to_transliterate]($var_to_change);
如果有人能指出我最好的解决方案,我将不胜感激。
没有找到相关结果
已邀请:
3 个回复
纤洞需匪
在编译时创建表,因此可以使用
在运行时访问编译器:
这里也没有必要使用引用,子程序参数已经通过引用传递。 如果您不想使用字符串eval,则需要使用支持运行时修改的构造。为此,您可以使用
运算符:
构造比
快,因为后者支持正则表达式。
购藏盗码韦
,转而支持一些实际上允许像ѭ5一样的元编程的东西。例如:
这是令人惊讶的直截了当。 :)
锯康