Создать sitemap – скрипт на perl

Я наал штамповать сайты 1 в сутки и ессно нужно создавать к ним sitemap для ьыстрейшего индексирования ну и вообще это по правилам уже, руками не создашь ессно для 1000 страниц, поэтому пришлось прибегнуть к знаниям перла и написать скрипт который обходит рекурсвино указанную иректорию и оздаёт sitemap

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#!/usr/bin/perl
  use warnings;
  use strict;
 
    my @EXT = qw (html htm shtml);
    my ($DOMAIN, $START) = ($ARGV[0], $ARGV[1]);

    my $URL = '
        <url>
                <loc>[!domain][!url]</loc>
                <lastmod>[!date]</lastmod>
                <changefreq>weekly</changefreq>
        </url>'
;
   
    sub DATE
    {
        my (undef, undef, undef, $day, $month, $year) = localtime(time);
        $year+=1900;
        $month++;
        $month = '0'.$month if $month < 10;
        $day = '0'.$day if $day < 10;
        return $year.'-'.$month.'-'.$day;
    }
   
    my $DATE = DATE();
   
    print '<?xml version="1.0" encoding="UTF-8"?>
    <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">'
;

    push(my @DIR, $START);
   
    foreach my $DIR (@DIR)
    {
        opendir(DIR, $DIR) || die;
        my @ls = readdir(DIR);
        closedir(DIR);
       
        foreach my $u (@ls)
        {
            next if ($u=~/^.$/ || $u=~/^..$/);
            if(opendir(tDIR, $DIR.$u.'/'))
            {
                closedir(tDIR);
                push (@DIR, $DIR.$u.'/');
            }
            else
            {
                foreach my $ext (@EXT)
                {
                    if ($u=~/$ext/)
                    {
                        my $tmp = $URL;
                        my $url = $DIR.$u;
                        $url=~s/$START//;
                        $tmp=~s/\[!url]/$url/;
                        $tmp=~s/\[!domain]/$DOMAIN/;
                        $tmp=~s/\[!date]/$DATE/;
                        print $tmp;
                        last;
                    }
                }
            }
        }
    }
   
    print "\n",'    </urlset>',"\n";

Комментарии

Написать комментарий.

Вы не авторизовались для того чтоб комментировать.