use 5.010; use strict; use warnings; # Dateien auflisten und sortieren my @files = sort glob '*.mkv'; # Segment-UIDs via mkvinfo auslesen my @uids = map { my $file = $_; open my $mkvinfo, '-|', qw/mkvinfo --ui-language en/, $file or die "Couldn't run mkvinfo on $file: $!"; my $uid; while (my $_ = <$mkvinfo>) { if (/\+ Segment UID:\s+0x(.*)$/) { $uid = $1; last; } } close $mkvinfo or die "Error running mkvinfo on $file: $!"; warn "Couldn't determine UID for $file" unless (defined $uid); $uid } @files; # Ueber alle Dateien iterieren und Felder setzen for ($[ .. $#files) { my $file = $files[$_]; my $prev_uid = ($_ - 1 >= $[ ? $uids[$_ - 1] : undef); my $next_uid = ($_ + 1 <= $#uids ? $uids[$_ + 1] : undef); my @options; push @options, '--set', "prev-uid=$prev_uid" if (defined $prev_uid); push @options, '--set', "next-uid=$next_uid" if (defined $next_uid); if (@options) { system('mkvpropedit', $file, qw/--edit info/, @options) == 0 or die "Couldn't run mkvpropedit on $file: status $?" } }