package UCaseHash;
use Tie::Hash;
use Carp qw<croak>;
...
sub TIEHASH {
my ( $class_name, $config_file_path ) = @_;
my $self = $class_name->SUPER::TIEHASH;
open my $fh, '<', $config_file_path
or croak "Could not open config file $config_file_path!"
;
my %phash = _process_config_lines( <$fh> );
close $fh;
$self->STORE( $_, $phash{$_} ) foreach keys %phash;
return $self;
}
4条答案
按热度按时间siotufzp1#
安迪的答案是一个很好的答案,除了他
uc
s每一个关键,然后uc
s它再次如果它不匹配。这
uc
s它一次:但是,既然你谈到了用户 * 存储密钥 *,平局是一个更确定的方式,即使较慢。
然后在主要:
tie
的“魔力”将其封装起来,这样用户就不会在不知情的情况下弄乱它。当然,只要使用“类”,就可以传入配置文件名并从那里初始化它:
在那里你会不得不这样称呼它:
......假设某个常数
CONFIG_FILE_PATH
。j2cgzkjk2#
遍历散列,将所有小写键替换为大写键,并删除旧键。大致如下:
ercv8c1e3#
这会将多级哈希转换为小写
eblbsuwk4#
我来这里是为了寻找一个答案,并想分享我的一些经验。为了确保GET/POST参数、模板和存储过程之间的兼容性,我想确保通过$cgi-〉Vars获得的所有键都是大写的,并且没有剩余的小写“重复”键。下面是基本的脚本...
输出如下所示...