Thread 3 Fragen: Trefferliste umstrukturieren, mit gefunden Links weiterarbeiten + wie kann ich nur Teile eines Treffers anzeigen?
(47 answers)
Opened by vitopetre at 2010-04-11 23:27
Hallo liebe Perl-Forum Rocker,
hier ist wieder vito der nervige kleine Anfänger. Ich hab mich jetzt durch Teile des Eulen-Buchs und des Buches "Beginning Perl" von James Lee durchgearbeitet, aber irgendwie hab ich immer noch große Probleme, vor alllem, weil ich kaum noch Zeit habe, mein Programm fertig zu stellen und ich auch deswegen viele Dinge in diesen Büchern nur überfliegen kann. Ich muss gestehen, dass ich meine Aufgabe echt unterschätzt habe und jetzt merke, dass man sich sehr gewissenhaft und langfristig in Perl einarbeiten muss; was mich aber nicht davon abhalten wird, dies nachdem ich mit dieser Aufgabe fertig bin auch gewissenhaft und ohne Zeitdruck zu tun. Jetzt zu meinen Fragen: Folgendes Programm ist ein Teil des Programmes, dass ich schreibe: 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 use LWP::Simple; $seite=get("http://www.dlib.org/rss/dlib.rss"); $seite=~ s/&.+?;/_/g; #entfernt alle mit &-beginnenden HTML-Sonderzeichen und ersetzt diese durch einen Unterstrich ( _ ) $stelle=0; $anfang=index($seite,"</channel>",$stelle); #hier soll das Ausschneiden anfangen while ($anfang>=0) { $ende=index($seite,"</rdf:RDF>",$anfang); $item=substr($seite,$anfang,$ende-$anfang); my @article = ($item =~ m/<title>(.+)<\/title>/g); foreach my $x (@article) {print "TI:$x\n\n " }; my @link = ($item =~ m/<link>(.+)<\/link>/g); foreach my $x (@link) {print "LI:$x\n\n " }; my @description = ($item =~ m/<description>(.+) by/g); foreach my $x (@description) {print "PT:$x\n\n " }; $anfang=index($seite,"<item>",$anfang+1); #Schleife um das ganze für den ganzen Quelltext zu machen! } Jetzt habe ich dazu folgende Fragen: 1. Als Resultat des Programmes bekomme ich eine Liste die so aussieht: TI:An Introduction to the March/April Issue TI:Realizing and Maintaining Aggregative Digital Library Systems: D-NET Software Toolkit and OAIster System TI:Using Omeka to Build Digital Collections: The METRO Case Study TI:Museum Data Exchange: Learning How to Share TI:Crowdsourcing: How and Why Should Libraries Do It? TI:An Approach to Open Access Author Payment TI:Berlin 7: Open Access Reaching Diverse Communities TI:In Brief: HumBox TI:In Brief: CACAO Project Overview TI:In Brief: Digital Classicist Summer Seminar Series 2010 TI:In Brief: The Wellcome Arabic Manuscript Cataloguing Partnership TI:In Brief: Frontiers of Science - Science Fact in a Comic Strip LI:http://dx.doi.org/10.1045/march2010-editorial LI:http://dx.doi.org/10.1045/march2010-manghi LI:http://dx.doi.org/10.1045/march2010-kucsma LI:http://dx.doi.org/10.1045/march2010-waibel LI:http://dx.doi.org/10.1045/march2010-holley LI:http://dx.doi.org/10.1045/march2010-king LI:http://dx.doi.org/10.1045/march2010-giglia LI:http://www.dlib.org/dlib/march10/03inbrief.html#DICKENS LI:http://www.dlib.org/dlib/march10/03inbrief.html#BOSCA LI:http://www.dlib.org/dlib/march10/03inbrief.html#MAHONY LI:http://www.dlib.org/dlib/march10/03inbrief.html#HENSHAW LI:http://www.dlib.org/dlib/march10/03inbrief.html#COLEMAN PT:Editorial PT:Article PT:Article PT:Article PT:Opinion PT:Conference Report Jetzt will ich aber diese Treffer nicht so angeordnet haben, sondern so, dass die Angaben die im Quelltext zusammengehören auch hier zueinander geordnet werden, also z. B.: TI:An Introduction to the March/April Issue LI:http://dx.doi.org/10.1045/march2010-editorial PT:Editorial TI:Realizing and Maintaining Aggregative Digital Library Systems: D-NET Software Toolkit and OAIster System LI:http://dx.doi.org/10.1045/march2010-manghi PT:Article und so weiter Außerdem will ich nur diejenigen Treffer, die auch für ALLE Kategorien einen Treffer liefern, habt ihr eine Idee, wie man das machen kann? 2. Muss ich dem Perl Programm klar machen, dass es zu den in der Liste angegebenen Links gehen soll, um dort weitere Informationen zu holen, wie sagt man das auf Perl? 3. Muss ich nicht nur die Art des Artikels angeben (PT:Article, Report, etc.), sondern auch den Autor bzw. die Autoren, die noch in der gleichen Klammer <description>(.+) <\/description> stehen, wie sage ich Perl, dass es mir zuerst nur den Teil des Treffers bis zum "by" als "PT: ..." anzeigen soll und dann die Trefer nach dem "by" als "AU: ..., AU: ..., etc."? So wie ich das ganze jetzt geschrieben habe funktionierts, aber nur für "PT:": Code (perl): (dl
)
1 2 my @description = ($item =~ m/<description>(.+) by/g); foreach my $x (@description) {print "PT:$x\n\n " }; So kriege ich zwar alles, aber ich weiß eben nicht, wie bzw. ob ich diesen Treffer dann noch weiter verarbeiten kann: Code (perl): (dl
)
1 2 my @description = ($item =~ m/<description>(.+) <\/description>/g); foreach my $x (@description) {print "PT:$x\n\n " }; So, dass sind jetzt wieder viele doofe Fragen, ich hoffe, dass ihr mir die eine oder andere davon beantworten könnt und ihr nicht allzusehr von mir genervt seid. Vielen Dank Vito |