Thread Array, Match und $1 (14 answers)
Opened by IceRage at 2011-09-22 22:54

IceRage
 2011-09-22 23:37
#152601 #152601
User since
2008-09-07
93 Artikel
BenutzerIn
[default_avatar]
Ich kann dir das Skript, wie es bei mir läuft posten klar:

Code (perl): (dl )
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
#!/usr/bin/perl
use strict;
use warnings;

use POSIX qw(strftime);
use LWP::Simple;

print "Hello, ScheduledWorld...\n";

while (1) {
        open(DEBUG, ">>debug.log");
        open(FILE, "<tmp_lines.txt");
        my @ar_title_lines = <FILE>;
        close(FILE);

        my $file_scalar = join(';', @ar_title_lines);
        #$file_scalar = "";

        my $site = get("...");
        my @ar_entry_chunks = split(/\<center\>\<B\>/, $site);

        shift(@ar_entry_chunks);
        my $num = $#ar_entry_chunks + 1;
        print DEBUG "num chunks: ".$num."\n";

        open(TEMP_FILE, ">tmp_lines.txt");
        my $offset = 0;
        for (my $i=0; $i<=$#ar_entry_chunks; $i++) {
                my $dummy = $ar_entry_chunks[$i];
                $dummy =~ /(.+?)\<\/B\>\<\/center\>/g;
                if (index($file_scalar, "$1") == -1) {
                        $offset++;
                        print "$i new: ".$1."\n";
                        print TEMP_FILE $1."\n";
                        print DEBUG "i:$i offset:$offset new: ".$1."\n";
                } else {
                        print "$i old: ".$ar_title_lines[$i-$offset];
                        print TEMP_FILE $ar_title_lines[$i-$offset];
                        print DEBUG "i:$i offset:$offset old: ".$ar_title_lines[$i-$offset];
                }
        }
        close(TEMP_FILE);

        if ($offset > 0) {
                open(STAT_FILE, ">>posting_stats.txt");
                print STAT_FILE "offset: ".$offset."\n";
                print STAT_FILE strftime('%d-%m-%Y %H:%M',localtime)."\n";
                close(STAT_FILE);
        }

        print DEBUG "offset: ".$offset."\n";
        print DEBUG strftime('%d-%m-%Y %H:%M',localtime)."\n";
        print DEBUG "################################################################debug\n";

        close(DEBUG);
        sleep(60);
}



Ich weiß nicht ob du damit mehr anfangen kannst. Der kritische Punkt befindet sich in der index() Abfrage. $1 wird wie gesagt abwechselnd mal initialisiert, und beim nächsten Durchlauf dann wieder nicht. Das heißt, also jetzt, mit dem $dummy wird $1 bei jedem Mal initialisiert, aber ohne wie oben gezeigt nicht.


Vielleicht noch zum Skript selbst: Es wird die Seite einer URL eingelesen, und mit split so aufgeteilt, dass die Titel bestimmter Einträge immer direkt zu Beginn der Splits stehen. Dann werden die Titel mit dem regulären Ausdruck gematched, und mit den Titeln aus dem tmp_lines.txt file verglichen (der Skalar). Wenn ein Titel im Skalar (im File) noch nicht enthalten sind, dann ist ein neuer Eintrag auf der Seite hinzugekommen, und der tmp_lines.txt File wird auf den neusten Stand gebracht. Es wird also jede Minute nachgesehen, ob neue Einträge auf der Seite hinzugekommen sind.

Könnte ich dir den Link vielleicht irgendwie per PN oder so schicken? Ich möchte keine Werbung für die Seite machen.

Gruß, IceRage


PS: Warum ist die Darstellung hier so verschoben. In der Vorschau ist alles in Ordnung.
Last edited: 2011-09-22 23:40:21 +0200 (CEST)

View full thread Array, Match und $1