Compare Pastes
Differences between the pastes
#269673 (25.05.2023 20:51)
and
#276148 (18.07.2024 10:08).
1 | #!/usr/bin/env perl | |
2 | use strict; | |
3 | use warnings; | |
4 | use version; | |
5 | use Data::Dumper; | |
6 | ||
7 | my $DIR_OPT = "/usr/home/portage/x86_64/"; | |
8 | my @dirs; | |
9 | my @pkgs; | |
10 | my @remove; | |
11 | my @skipped; | |
12 | ||
1 | Спа девичник в Москве: | |
2 | Заполните форму, и мы свяжемся с Вами в ближайшее время http://bud707.ru/product/подарочный-сертификат-на-сумму-2880р-2/ | |
3 | ||
4 | от 2 часов 30 мин http://bud707.ru/product/подарочный-сертификат-на-сумму-55000р/ | |
5 | ||
6 | Продолжительность СПА-девичника: 2-3 часа http://bud707.ru/product/4208/ | |
7 | ||
8 | 120 мин http://bud707.ru/product/4829/ | |
9 | Массаж лица и тела Рутуал для рук и ног http://bud707.ru/product/копировать-23/ | |
10 | ||
11 | Спа девичник http://bud707.ru/product-category/спа-свидания/ | |
12 | ||
13 | if ( opendir( DIR, $DIR_OPT ) ) { | |
14 | @dirs = grep -d "$DIR_OPT/$_", readdir DIR; | |
15 | closedir( DIR ); | |
16 | } | |
17 | ||
18 | foreach my $dir ( @dirs ) { | |
19 | next if ( $dir eq "." ); | |
20 | next if ( $dir eq ".." ); | |
21 | if ( opendir( DIR, $DIR_OPT."/".$dir ) ) { | |
22 | @pkgs = readdir DIR; | |
23 | closedir( DIR ); | |
24 | @pkgs = grep {!/(^\.$|^\.\.$)/} @pkgs; | |
25 | my $pkgver = {}; | |
26 | foreach ( @pkgs ) { | |
27 | my ($pname, $pver, $prev) = ($_ =~ /(.*)\-([\d\._]+)(\-r\d+)?\.tbz2/i); | |
28 | if ( ! defined $pname ) { | |
29 | push @skipped, "$DIR_OPT$dir/$_"; | |
30 | next; | |
31 | } | |
32 | $prev = "-r0" if ( ! defined $prev ); | |
33 | $prev =~ s/-r//; | |
34 | print "-- $_ parsed as $pname, $pver, $prev\n"; | |
35 | if ( ! defined $pkgver->{$pname} ) { | |
36 | $pkgver->{$pname}[0] = $pver; | |
37 | $pkgver->{$pname}[1] = $prev; | |
38 | next; | |
39 | } | |
40 | print "Found twin for $pname ($_)\n"; | |
41 | if ( version->parse($pkgver->{$pname}[0]) > version->parse( $pver ) ) { | |
42 | push @remove, "$DIR_OPT$dir/$_"; | |
43 | next; | |
44 | } | |
45 | if ( version->parse($pkgver->{$pname}[0]) == version->parse( $pver ) && $pkgver->{$pname}[1] >= $prev ) { | |
46 | next if ( $pkgver->{$pname}[1] >= $prev ); # same prog, miracle, just skip it | |
47 | push @remove, "$DIR_OPT$dir/$_"; | |
48 | next; | |
49 | } | |
50 | $pkgver->{$pname}[0] = $pver; | |
51 | $pkgver->{$pname}[1] = $prev; | |
52 | $prev = "-r".$prev; | |
53 | $prev = "" if ( $prev eq "-r0" ); | |
54 | push @remove, "$DIR_OPT$dir/$pname-$pver$prev.tbz2"; | |
55 | } | |
56 | } | |
57 | } | |
58 | unlink @remove; | |
59 | #print Dumper(@remove); |