값을 해시에 병합하는 과정을 알고 싶습니다. 오류가 런타임 값을 출력하는지에 따라 5 ~ 6 개의 키가있는 해시가 있습니다. 인수를 취하는 메소드는 또한 처음에는 오류 메시지 문자열을 사용합니다. 기본적으로 하나의 큰 해시를 만들기 위해이 오류 메시지 문자열을 해시에 추가 할 수 있기를 원합니다.Perl의 기존 해시에 스칼라 값 (문자열)을 추가하는 방법
이 메소드를 호출 할 것이다 방법입니다
이ASC::Builder::Error->new("Simple error message here", code => "UNABLE_TO_PING_SWITCH_ERROR", switch_ip => $ip3, timeout => $t1);
- 마지막 두 값은 오류 해시의 컨텍스트 키 내부의 키에 런타임 매개 변수/값을 할당합니다. 여기
- 오류 해시 살펴이다 : 여기
use constant ERROR_CODE => {
UNABLE_TO_PING_SWITCH_ERROR => {
category => 'Connection Error',
template => 'Could not ping switch %s in %s seconds.',
context => [qw(switch_ip timeout)],
tt => {template => 'disabled'},
fatal => 1,
wiki_page => 'www.error-solution.com/ERROR_CODE_A',
}
};
메시지
sub _create_error_hash {
my $error_string = shift; if(defined($params{code}) {
my $first_param = delete $params{code};
foreach my $key (@{$first_param->{context}}) {
$first_param->{$key} = $key;
}
my @template_args = map { $first_param->{$_}} @{$first_param->{context} };
$first_param->{message} = sprintf($first_param->{template}, @template_args); }
return bless $first_param;
}
sub _merge_hashes {
my ($message = {message => $messsage}, $first_param = {first_param => $first_param}) = @ _;
#merge these two hashes and bless into $class (don't know how to merge hashes)
my %merged_hash = ($message, $first_param);
return bless $merged_hash, $class;
}
를 오류 해시 조작 및 구성하는 내 방법
_create_hash
의 출력은이어야 _merge_hashes
입력 올바르게 처리했는지 확실하지 않습니다. 이 메소드는 새 메소드 (현재는 엉망입니다) 내부에서 사용되므로 포함되지 않습니다. 그것은 아주 간단 나는 펄에서 해시를 병합하는 방법에 대한 간단한 설명과 함께 시작하는거야 http://www.perlmonks.org/?node_id=14263
단지주의해야 할 점은 생성자가 올바른 객체를 반환하기를 원한다는 것을 기억하십시오. 따라서 'new' 메소드는 반환해야합니다. 'bless'-ed ref를 사용하여 호출 코드가 제대로 작동하도록합니다. 보통'return bless $ self, $ class'를 할 것은'new'입니다. 그 방법의 내부에서, 그래서 클래스 안에서, 당신은 물론 다른 서브를 호출하여 작업을 구성 할 수 있습니다. – zdim