новый вопрос

вниваю разные значения в двух файлах CSV. Если у меня нет соответствия, я хочу добавить (или обновить) мои устройства в моей Системе управления.

output1.csv (имя, ip) - основная система

 Test1, 10.56.7.13
 Test2, 10.56.4.14
 Test3, 10.56.5.15

output2.csv (id, name, ip) - Вторичная система

 1234,Test1, 10.56.7.13
 1235,Test2, 10.56.4.10

Мой результат должен быть: я ничего не делаю сTest1 (потому что это уже в системе 2), я должен обновитьTest2 (потому что теперь у меня есть другой IP-адрес), и я должен добавитьTest3потому что у меня его нет во вторичной системе.

use strict;
use warnings;
use feature qw(say);
use autodie;

use constant {
    FILE_1  => "output1.csv",
    FILE_2  => "output2.csv",
};

my %first;
my $name_first;
my $ip_first;
open my $output_1, "<", FILE_1;

while ( <$output_1> ) { 
    chomp;
    ($name_first, $ip_first) = split /,/;  #/
    $first{$name_first}=1;
    $first{$ip_first}=1;
}
close $output_1;

my %second;
open my $output_2, "<", FILE_2;

while ( <$output_2> ) { 
    chomp;
    my ($id_second,$name_second,$ip_second) = split /,/;
    if ( $first{$name_first} && $first{$ip_second} ) { 
        print "Match found $name_second, $ip_second\n";
        if ( $first{$name_first} eq $first{$name_second} &&  
            $first{$ip_first} ne $first{$ip_second}) 
        {   
            print "It should be done UPDATE for $name_second\n";
            else
            print "Devices should be added: $name_first\n"
            $second{$name_second}++;
        }   
    }   
}
close $output_2;

Я получаю сообщение об ошибке в этой строкеif ( $first{$name_first} e.g. $first{$name_second}, Я думаю, что мое сравнение неверно - есть ли лучший способ сделать это?

Еще один вопрос: для UPDATE (PUT Request) мне нужны отдельные ключи. Потому что мне нужен мойid вURL и мне нужно положить вXML template name а такжеipaddress, это должно быть добавлено. Могу ли я сделать это таким образом?

else {
    say "UPDATE need be done for $second{$name}";
       my $xml = XML::Twig -> new -> parsefile ( 'template.xml' );
      $xml ->set_pretty_print('indented_a');
   open ( my $input, '<', 'output2.csv' ) or die $!;
      while ( <$input> ) { 
      chomp; 
      my $id, my $name, $second{$name} = split /,/; 
      $xml -> root -> set_att('name', $name ); 
      $xml -> get_xpath('//ipaddress',0) -> set_text($second{$name}); 
      my $uri="https://hostname:9060/ers/config/networkdevice/$id";

Ответы на вопрос(1)

Ваш ответ на вопрос