Попробовать man sudo
и взгляните на раздел FILES:
/var/lib/sudo Каталог, содержащий метки времени
И в SECURITY NOTES
sudo проверит владение своего каталога метки времени (/var/lib/sudo по умолчанию) [...]
(страницы справочника от Debian 6.0.4)
File1.dat читается в хеш, первый столбец является ключом, второй столбец является значением. Затем File2.dat обрабатывается, и значение от хеша вставляется в массив, представляющий значения на одной строке согласно ключу, взятому сначала (в Perl, нулевом) столбец.
#!/usr/bin/perl
use warnings;
use strict;
my %tab;
open my $F1, '<', 'File1.dat' or die $!;
while (<$F1>) {
chomp;
my ($key, $value) = split /\|/; # Here, the delimiter is mentioned.
$tab{$key} = $value;
}
open my $F2, '<', 'File2.dat' or die $!;
while (<$F2>) {
chomp;
my @cols = split /\|/;
splice @cols, 1, 0, $tab{$cols[0]};
print join('|', @cols), "\n";
}
Можно получить подобный вывод со стандартом utils:
join -a2 -t'|' <(sort File1.dat) <(sort File2.dat) | sort -n
Помните, какую комбинацию полей Вы уже видели в хеше. Если комбинация является новой, распечатайте строку, иначе ничего не сделайте.
#!/usr/bin/perl
use warnings;
use strict;
use feature 'say';
my %seen;
while (<>) {
chomp;
my @fields = split /\|/, $_, 2; # Only split into 2 fields.
say unless exists $seen{$fields[1]}; # Do not print if already seen.
undef $seen{$fields[1]}; # Mark the key as seen.
}