2013-11-18 5 views
2

Я пытаюсь выяснить способ разделить строку по разделителю: и сохранить их как две строки. Я пробовал что-то в строке 9, но он не работает. По-видимому, я хочу найти существование @clients в @ping_host, если не существует, тогда отправьте предупреждение. Любое предложение?сохранить значение ключа в двух разных переменных

@ping_host = ['1232','1212']; 
@clients = ['1232:RARB','1212:CBN']; 
client_monitor_state(@ping_host); 

sub client_monitor_state(@ping_host){ 
my $token = $properties{token}; 
@clients = split(/,/, $token); 
foreach $client (@clients){ 
($client_id,$client_name)=m/(\w+)\s*:(.+)/; # here the client_id should have the first part of match string 

    if(! grep($client_id,@ping_host)){ 
    print "Client noted is $client_name \n"; 
    # mail the client that is not reachable 
    my $subject_line = "The client $client_name is not reachable"; 
    smtp_send(server_name => $client_name, subject_name => $subject_line); 
    } 
} 
} 

ответ

2

Вы должны use warnings;, потому что он, вероятно, намекнул бы на решение. Вы неявно с помощью $_ вместо $client, и вы должны использовать =~ вместо =

use warnings; 
use strict; 

my $client = 'this:that'; 
my ($client_id, $client_name) = $client =~ m/(\w+)\s*:(.+)/; 
print "$client_id,$client_name\n"; 

__END__ 

this,that 
Смежные вопросы