Introduction to Perl Programming Language

undefined
 
P
ERL
:
A
 
HIGH
-
LEVEL
, 
GENERAL
-
PURPOSE
, 
INTERPRETED
,
DYNAMIC
 
PROGRAMMING
 
LANGUAGE
 
Λούκας Νεοκλέους - Μαρία Χαραλάμπους
 
-
 
Βλαδίμηρος Θεοδοσίου
 
ΕΠΛ
 371 – 
Προγραμματισμός Συστημάτων
Πανεπιστήμιο Κύπρου
 
21/9/2024
 
PERL: P
RACTICAL
 E
XTRACTION
 
AND
R
EPORT
 L
ANGUAGE
 
Συνδυάζει:
S
e
d
C
Awk
και διάφορες γλώσσες προγραμματισμού 
shell
Δημοφιλής για γράψιμο CGI scripts
Interpreted scripting programming language
(γλώσσα
διερμήνευσης)
CPAN(Comprehensive Perl Archive Network
)
Case-sensitive
 
21/9/2024
 
ΕΠΛ 371 - Προγραμματισμός Συστημάτων
 
ΙΣΤΟΡΙΚΗ ΑΝΑΔΡΟΜΗ
 
Δημιουργός: 
Larry Wall
1
η
 έκδοση
 : 
1987
2
η
 έκδοση : 1988
3
η
 έκδοση : 1989
4
η
 έκδοση : 1991
5
η
 έκδοση : 1994
6
η
 έκδοση : ????
 
21/9/2024
 
 
 
http://
upload.wikimedia.org/wikipedia/commons/4/42/Perl_history.svg
 
ΕΠΛ 371 - Προγραμματισμός Συστημάτων
 
Π
ΛΑΤΦΟΡΜΕΣ
 Ε
ΚΤΕΛΕΣΗΣ
 
21/9/2024
 
ΕΠΛ 371 - Προγραμματισμός Συστημάτων
 
 
 
ΠΛΕΟΝΕΚΤΗΜΑΤΑ
 
Φορητότητα
Ισχυρά προγράμματα με λίγες γραμμές κώδικα
Ενδιάμεση γλώσσα μεταξύ μεταγλωττίσιμων γλωσσών και
του 
shell programming
Εργασίες ανάλυσης (data parsing)
, 
εξαγωγής (extraction)
και χειρισμού (manipulation) δεδομένων
 
 
κυρίως 
strings
Επεξεργασία 
strings
 με κανονικές
εκφράσεις
 
21/9/2024
 
ΕΠΛ 371 - Προγραμματισμός Συστημάτων
 
ΠΛΕΟΝΕΚΤΗΜΑΤΑ
ΣΥΝΕΧΕΙΑ...
 
Ευέλικτη γλώσσα
Εύκολη δέσμευση – αποδέσμευση μνήμης
Δεν χρειάζονται δηλώσεις μεταβλητών
CPAN
Modularity & Reusability
Αντικειμενοστρέφεια
 
21/9/2024
 
ΕΠΛ 371 - Προγραμματισμός Συστημάτων
 
ΜΕΙΟΝΕΚΤΗΜΑΤΑ
 
Μεγάλα προγράμματα 
 Δύσκολα στη διαχείριση
 
Πολλές φορές ο κώδικας είναι περισσότερος σε σχέση
με άλλη γλώσσα
Μερικές φορές είναι επικίνδυνα ευέλικτη για μια
γλώσσα προγραμματισμού
 
Δύσκολη η δημιουργία 
executable
 
Για φορητότητα χρειάζεται επανεγκατάσταση!
 
21/9/2024
 
ΕΠΛ 371 - Προγραμματισμός Συστημάτων
 
ΕΓΚΑΤΑΣΤΑΣΗ
 
 
Διατίθεται δωρεάν!
GNU 
licence
Πηγαίος κώδικας: 
http://www.perl.org/get.html
Εκδόσεις για όλα τα λειτουργικά!
Πλατφόρμες
 Linux
 
 by default 
εγκατάσταση
 
21/9/2024
 
ΕΠΛ 371 - Προγραμματισμός Συστημάτων
 
HELLO
 
WORLD
 
21/9/2024
 
ΕΠΛ 371 - Προγραμματισμός Συστημάτων
 
Β
ΑΣΙΚΑ
 Χ
ΑΡΑΚΤΗΡΙΣΤΙΚΑ
 
Δεν υπάρχει 
main 
αλλά υπάρχουν 
subroutines
Ένα πρόγραμμα σε Perl είναι κάπως έτσι :
  
#!/usr/bin/perl
 
  
εντολή;
  
# αυτό είναι ένα σχόλιο
  
εντολή;
 
  
if  ( expression )
  
{
  
     # αυτό είναι ένα 
block 
κώδικα
  
}
 
21/9/2024
 
ΕΠΛ 371 - Προγραμματισμός Συστημάτων
 
ΜΕΤΑΒΛΗΤΕΣ
 
Τρεις τύποι μεταβλητών:
 
1.
Scalars:
my 
$foo = 1;
my $name = “EPL371";
my $pi = 3.141592;
 
2.
Arrays:
@array_empty =();
@colours = ("red", "green", "blue");
@
my_array = (3, 5, 7, 9); 
 $my_array[1] = 3;
 
3.
Hashes:
my %info = (height => 176, weight => 72);
 
  ή
my %info = ('height' , 
176
 , 'weight' , 7
2
); 
 $info{height}  = 176;
 
21/9/2024
 
ΕΠΛ 371 - Προγραμματισμός Συστημάτων
 
21/9/2024
 
Τ
Α
 Ε
ΙΔΗ
 Τ
ΩΝ
 
Q
UOTES
 (
Ε
ΙΣΑΓΩΓΙΚΩΝ
)
 
ΕΠΛ 371 - Προγραμματισμός Συστημάτων
 
Για να τυπώσουμε ένα ειδικό χαρακτήρα στα διπλά εισαγωγικά:
 
 
πχ. @, $, %, \, ' κ.λ.π.
 
 
print "The amount is $money \$\n";
 
Τότε η εκτύπωση θα μας έδινε:
 
The amount is 25$
 
$name = <STDIN>;
Η μεταβλητή $
name
 θα πάρει
 
την τιμή της από το STDIN (standard input)
Χρησιμοποιούμε την chomp () για να «καθαρίσουμε» τα δεδομένα που
δίνουμε στην Perl από αλλαγές γραμμών.
  
π.χ:
  
$name= <STDIN>;
 
chomp($name);
 
print “
Hello
 $name!!\n";
  
Το αποτέλεσμα της εκτύπωσης θα είναι:
 
 
Hello Loukas!
 
21/9/2024
 
Ε
ΙΣΟΔΟΣ
 Α
ΠΟ
 
ΤΟ
 Π
ΛΗΚΤΡΟΛΟΓΙΟ
 
ΕΠΛ 371 - Προγραμματισμός Συστημάτων
 
If (condition) { . . . }
elsif (condition) { .
 
.
 
. }
while () { 
. . . 
}
do { . . . } while();
for(
αρχική_εντολή; έκφραση; εντολή_αύξησης
) { 
. . .
 }
foreach $var (@array) { 
. . .
 }
statement if (condition);
statement unless (condition);
statement while (condition);
statement until (condition);
statement foreach (condition);
l
ast 
όπως 
break - next
 όπως 
continue
 
21/9/2024
 
Δ
ΟΜΕΣ
 Ε
ΛΕΓΧΟΥ
ΠΑΝΑΛΗΨΗΣ
 
ΕΠΛ 371 - Προγραμματισμός Συστημάτων
 
21/9/2024
 
Τ
ΕΛΕΣΤΕΣ
 
ΕΠΛ 371 - Προγραμματισμός Συστημάτων
 
Ορισμός:
 
sub foo()
 
{
 
  
 
        
print “You are in the function”;
 
 
}
 
Κλήση:
foo(); 
 
με παραμέτρους μέσα στις παρενθέσεις
&foo;
 
 μπορεί να έχει πρόβλημα όταν υπάρχουν παράμετροι
 
Παράμετροι:
$_[0],  $_[1], …
  
 
  
#  
προσπέλαση
my ( $x, $y, $z ) = @_;
   #  αντιγραφή παραμέτρων σε μεταβλητές
 
21/9/2024
 
Υ
ΠΟΡΟΥΤΙΝΕΣ
 
ΕΠΛ 371 - Προγραμματισμός Συστημάτων
 
Πολύπλοκες συγκρίσεις συμβολοσειρών
$string =~ m/sought_text/;
Πολύπλοκες επιλογές συμβολοσειρών
$string =~ m/whatever(sought_text)whatever2/;
$soughtText = $1;
Πολύπλοκες αντικαταστάσεις συμβολοσειρών
$string =~ s/originaltext/newtext/;
 
21/9/2024
 
Κ
ΑΝΟΝΙΚΕΣ
 Ε
ΚΦΡΑΣΕΙΣ
(
R
EGULAR
 E
XPRESSIONS
)
 
ΕΠΛ 371 - Προγραμματισμός Συστημάτων
 
=~
$string =~ m/Bill Clinton/;
$string =~ s/Bill Clinton/Al Gore/;
!~
$string 
!
~ m/Bill Clinton/;
$string 
!
~ s/Bill Clinton/Al Gore/;
m
$string =~ m/Bill Clinton/;
$string =~ /Bill Clinton/;
^
$string =~ m/^Bill Clinton/;
$
$string =~ m/Bill Clinton$/;
i
$string =~ m/Bill Clinton/i;
 
21/9/2024
 
Κ
ΑΝΟΝΙΚΕΣ
 Ε
ΚΦΡΑΣΕΙΣ
(
R
EGULAR
 E
XPRESSIONS
 – S
YMBOL
 E
XPLANATION
)
 
ΕΠΛ 371 - Προγραμματισμός Συστημάτων
 
Π
ΑΡΟΥΣΙΑΣΗ
 Δ
ΥΝΑΤΟΤΗΤΩΝ
Μ
ΕΣΩ
 Π
ΑΡΑΔΕΙΓΜΑΤΟΣ
 
Υπολογισμός
 
της Συχνότητας Εμφάνισης Λέξεων
 
Κλειδιών
 
σε Ιστοσελίδες
 
Web Crawler & Lexicon
 
Generator
 
(Άσκηση 2)
 
21/9/2024
 
ΕΠΛ 371 - Προγραμματισμός Συστημάτων
 
Σ
ΤΑΤΙΣΤΙΚΑ
 
21/9/2024
 
ΕΠΛ 371 - Προγραμματισμός Συστημάτων
 
Χρόνος Εκτέλεσης:
 
Α
ΝΟΙΓΜΑ
 
S
OCKET
 
Bash Programming:
 
exec 5<>/dev/tcp/www2.ucy.ac.cy/80
 
exec 5>&-
 
echo -e "GET $index HTTP/1.0\n" >&5
 
 
cat <&5 > /tmp/$USER/data/file.txt
 
exec 5>&-
 
exec 5
<
&-
 
 
Perl:
 
use IO::Socket;
 
$page = “www2.ucy.ac.cy”;
 
my $socket = IO::Socket::INET->new(PeerAddr=>$page, PeerPort=>'80',Proto =>'tcp');
 
or die "cannot connect to port 80 at www2.ucy.ac.cy";
 $name = "http://".$webpage;
 getstore($name, $textfile) or die 'Unable to get page';
 
close $server;
 
21/9/2024
 
ΕΠΛ 371 - Προγραμματισμός Συστημάτων
 
Λ
ΕΞΙΚΟ
 
 open(FILE, $textfile);
 my @contents = (<FILE>);
 close(FILE);
 open(OUTFILE, ">file1.txt");
 foreach $line (@contents)
  {
   $line =~ s/<[^>]*>//g;
   $line =~ s/<[^>]*$//g;
   $line =~ s/^[^<]*>//g;
   $line =~ s/\&[^;]*;//g;
   $line =~ s/[^a-zA-Z]/ /g;
   $line =~ s/^$//g;
   $line =~ s/[ \t\n\s]+/\n/g;
 
   print OUTFILE $line;
  }
 
  close(OUTFILE);
  open(FILE, "file1.txt");
  my @contents = (<FILE>);
  close(FILE);
  open(OUTFILE, ">file1.txt");
 
  foreach $line (@contents)
  {
    if ($line ne "\n")
    {
      print OUTFILE lc($line);
    }
  }
 
  close(OUTFILE);
 
21/9/2024
 
ΕΠΛ 371 - Προγραμματισμός Συστημάτων
 
sed '1,/^Content-Type:/d' file.txt | sed 's/<[^>]*>//g' | sed 's/<[^>]*$//g' |
sed 's/^[^<]*>//g' | sed 's/&.*;//g' | sed 's/[^a-zA-Z]/ /g' | tr " " '\n' | sed '/^$/d'  |
tr '[:upper:]' '[:lower:]'
 
C
RAWLER
 
open(FILE, $textfile);
my @contents = (<FILE>);
close(FILE);
open(OUTFILE, ">file2.txt");
foreach $line(@contents)
{
  
if ($line =~ m/(<a href[^>]*>|<A HREF[^>]*>)/)
  {
     
$x = $1."\n";
     
if ( $x =~ m/(\"[^\"]*\")/ )
   
  {
    
    $x = $1."\n";
     
   if ( $x =~
m/(\"http:\/\/$webpage[^\"]*\"|\"\.\/[^\"]*\"|\"\.
\.\/[^\"]*\")/ )
       
 {
      
      $x = $1."\n";
      
      $x =~ s/\"//g;
      
      $x =~ s/http:\/\///g;
      
      print OUTFILE $x;
    } }}}
 close(OUTFILE);
 open(OUTFILE, "file2.txt");
 my @contents = (<OUTFILE>);
 close(OUTFILE);
 open(OUTFILE, ">file2.txt");
 foreach $line(@contents)
 {
   
if (!( $line =~ m/\.\/index\.html/ ))
{
   
print OUTFILE $line;
} }
close(OUTFILE);
 
open(OUTFILE, "file2.txt");
my @contents = (<OUTFILE>);
close(OUTFILE);
open(OUTFILE, ">file2.txt");
foreach $line(@contents)
{
   
$line =~ s/^\.\.\//$webpage\//;
   
$line =~ s/^\.\//$webpage\//;
   
$line =~ s/\.\.\///g;
    
print OUTFILE $line;
 }
 close(OUTFILE);
 open(OUTFILE, "file2.txt");
 my @contents = (<OUTFILE>);
 close(OUTFILE);
my %c_hash = ();
foreach my $line (@contents) {
  $c_hash{$line} = 1;
}
my @c_unique = keys(%c_hash);
 open(OUTFILE, ">file2.txt");
 foreach $line(@c_unique)
 {
    
print OUTFILE $line;
 }
 close(OUTFILE);
 open(OUTFILE, ">>allpages.txt");
 foreach $line(@c_unique)
 {
      
$line =~ s/$webpage//;
      
print OUTFILE $line;
 }
 close(OUTFILE);
 open(OUTFILE, "allpages.txt");
 my @contents = (<OUTFILE>);
 close(OUTFILE);
my %c_hash = ();
foreach my $line (@contents) {
  $c_hash{$line} = 1;
}
my @c_unique = keys(%c_hash);
 open(OUTFILE, ">allpages.txt");
 foreach $line(@c_unique)
 {
     
print OUTFILE $line;
 }
 close(OUTFILE);
 
21/9/2024
 
ΕΠΛ 371 - Προγραμματισμός Συστημάτων
 
sed '1,/^Content-Type:/d' /tmp/$USER/data/file.txt > /tmp/$USER/data/content.txt
 cat /tmp/$USER/data/content.txt | grep -o '<a href[^>]*>\|<A HREF[^>]*>'| grep -o '"[^"]*"' | grep -o
'"http:\/\/'$webpage'[^"]*"\|"\.\/[^"]*"\|"\.\.\/[^"]*"' | sed 's/"//g'| sed 's/http:\/\///g'| sed '/\.\/index\.html/d' | sed
's/^\.\.\//'$webpage'\//' | sed 's/^\.\//'$webpage'\//' | sed 's/\.\.\///g' | sort | uniq > /tmp/$USER/data/final.txt
 cat /tmp/$USER/data/final.txt | sed 's/'$webpage'//' >> /tmp/$USER/data/final2.txt
 cat /tmp/$USER/data/final2.txt | sort | uniq > /tmp/$USER/data/final2.txt
 
Κ
ΥΡΙΩΣ
 Π
ΡΟΓΡΑΜΜΑ
 
while ($depth < $ARGV[1])
{
     
$depth++;
     
open(FILE, "allpages.txt");
     
my @contents = (<FILE>);
     
close(FILE);
     
unlink("allpages.txt");
     
foreach my $url (@contents)
    
 {
 
$name = "http://".$webpage.$url;
 
getstore($name, $textfile) or die 'Unable to
get page';
 
$contype = &contentType($textfile);
 
if ($contype==1)
 
 {
  
 
       
&lexicon($textfile);
 
 
       
&crawler($ARGV[0], $textfile);
 
       
print VISITED $webpage.$url;
 
 }
 
else
 
 {
 
        
print BROKEN $name;
 
 
 }
        
}
}
 
21/9/2024
 
ΕΠΛ 371 - Προγραμματισμός Συστημάτων
 
until [ $count -eq $depth ]
do
          
((count=count+1));
          
cat final2.txt | sort | uniq > allurls.txt
          
rm -r final2.txt
          
while read url
          
do
 
openSocket $url;
 
kwdikosSelidas;
 
value1=$?
 
contentType;
 
value2=$?
 
if [[ $value1 == 1 && $value2 == 1 ]]; then
 
       
crawler;
 
       
lexicon;
 
       
echo $webpage$url >> allvisited.txt
 
fi
 
closeSocket;
         
done < allurls.txt
         
cat allvisited.txt | sort | uniq -c > allvisited.txt
done
 
ΣΥΜΠΕΡΑΣΜΑΤΑ
 
Η 
Perl 
είναι
 
μια γλώσσα
 
προγραμματισμού με
 
πολλές
δυνατότητες
Περισσότερος κώδικας σε 
Perl
,
 
όμως εύκολος να γραφτεί
Ενσωμάτωση στον κώδικα μας εντολών που ήταν
γνωστές σε εμάς από το 
bash
Μισός χρόνος εκτέλεσης απ’ ότι στο 
Bash
Πολύ εύκολο να βρεθούν και να διορθωθούν λάθη στον
κώδικα 
περισσότερες μεταβλητές πίνακες.
Καμία ιδιομορφία στον κώδικα όπως έχει το 
Bash
Πιο κοντά σε 
high-level 
γλώσσα.
 
 
 
 
21/9/2024
 
ΕΠΛ 371 - Προγραμματισμός Συστημάτων
 
ΒΙΒΛΙΟΓΡΑΦΙΑ
 
Learning Perl, Randal L. Schwaartz
, 
Third Edition
http://www.perl.org/
http://el.wikipedia.org/wiki/Perl
http://dide.flo.sch.gr/Plinet/Tutorials/Tutorials-Perl.html
http://www.eeei.gr/programming/perl/index.html
http://www.docstoc.com/docs/23978204/Programming-in-Perl-History-
Advantages-of-Perl-Perl-Is
http://www.answerbag.com/q_view/16515
http://www.tipstoremember.com/benefits-of-perl-programming-
language/
http://www.geekinterview.com/question_details/58751
 
21/9/2024
 
ΕΠΛ 371 - Προγραμματισμός Συστημάτων
Slide Note
Embed
Share

Perl is a high-level, general-purpose, interpreted, dynamic programming language created by Larry Wall. It is known for its practical extraction and reporting capabilities, robust shell scripting, and support for CGI scripts. Perl is celebrated for its modularity, case-sensitivity, and extensive library through CPAN. With a long history dating back to 1987 and a flourishing community, Perl continues to be a popular choice for data parsing, manipulation, and script automation tasks.

  • Programming Language
  • Perl
  • Scripting
  • Dynamic

Uploaded on Sep 21, 2024 | 0 Views


Download Presentation

Please find below an Image/Link to download the presentation.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author. Download presentation by click this link. If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.

E N D

Presentation Transcript


  1. PERL: A HIGH-LEVEL, GENERAL-PURPOSE, INTERPRETED, DYNAMIC PROGRAMMING LANGUAGE http://www.vmturbo.com/Portals/71270/images/Perl-resized-600.png http://www.vmturbo.com/Portals/71270/im ages/Perl-resized-600.png - - 371 21/9/2024

  2. PERL: PRACTICAL EXTRACTION AND REPORT LANGUAGE 21/9/2024 : Sed C Awk shell CGI scripts Interpreted scripting programming language( ) CPAN(Comprehensive Perl Archive Network) Case-sensitive 371 -

  3. : Larry Wall 21/9/2024 1 : 1987 2 : 1988 3 : 1989 4 : 1991 5 : 1994 6 : ???? http://upload.wikimedia.org/wikipedia/commons/4/42/Perl_history.svg http://upload.wikimedia.org/wikipedia/commons/4/42/Perl_history.svg 371 -

  4. 21/9/2024 371 -

  5. 21/9/2024 shell programming (data parsing), (extraction) (manipulation) strings strings 371 -

  6. ... 21/9/2024 CPAN Modularity & Reusability 371 -

  7. 21/9/2024 executable ! 371 -

  8. 21/9/2024 ! GNU licence : http://www.perl.org/get.html ! Linux by default 371 -

  9. HELLO WORLD 21/9/2024 : program.pl 1 : program.pl 2 print Hello World\n ; #!/usr/bin/perl print Hello World\n ; : program.pl 1 : program.pl 2 $perl program.pl $chmod +x program.pl $./program.pl 371 -

  10. main subroutines Perl : #!/usr/bin/perl 21/9/2024 ; # ; if ( expression ) { # block } 371 -

  11. : 21/9/2024 1. Scalars: my $foo = 1; my $name = EPL371"; my $pi = 3.141592; 2. Arrays: @array_empty =(); @colours = ("red", "green", "blue"); @my_array = (3, 5, 7, 9); $my_array[1] = 3; 3. Hashes: my %info = (height => 176, weight => 72); my %info = ('height' , 176 , 'weight' , 72); $info{height} = 176; 371 -

  12. QUOTES () Single ( ) Double ( ) 21/9/2024 print The number is $num\n ; print "The number is $num\n"; The number is $num The number is 25 : . @, $, %, \, ' . . . print "The amount is $money \$\n"; : The amount is 25$ 371 -

  13. 21/9/2024 $name = <STDIN>; $name STDIN (standard input) chomp () Perl . . : $name= <STDIN>; chomp($name); print Hello $name!!\n"; : Hello Loukas! 371 -

  14. - If (condition) { . . . } 21/9/2024 elsif (condition) { . . . } while () { . . . } do { . . . } while(); for( _ ; ; _ ) { . . . } foreach $var (@array) { . . . } statement if (condition); statement unless (condition); statement while (condition); statement until (condition); statement foreach (condition); last break - next continue 371 -

  15. Description String op Numeric op 21/9/2024 assignment = equality eq == inequality ne != ternary compare cmp < = > ternary ?: concatenation . (dot) arithmetic +, -, *, /,% relational lt, le, gt, ge <, <=, >, >= bitwise &, |, ^, ~, <<, >> logical &&, ||, ! increment ++, -- 371 -

  16. 21/9/2024 : sub foo() { print You are in the function ; } : foo(); &foo; : $_[0], $_[1], # my ( $x, $y, $z ) = @_; # 371 -

  17. (REGULAR EXPRESSIONS) 21/9/2024 $string =~ m/sought_text/; $string =~ m/whatever(sought_text)whatever2/; $soughtText = $1; $string =~ s/originaltext/newtext/; 371 -

  18. (REGULAR EXPRESSIONS SYMBOL EXPLANATION) =~ 21/9/2024 $string =~ m/Bill Clinton/; $string =~ s/Bill Clinton/Al Gore/; !~ $string !~ m/Bill Clinton/; $string !~ s/Bill Clinton/Al Gore/; m $string =~ m/Bill Clinton/; $string =~ /Bill Clinton/; ^ $string =~ m/^Bill Clinton/; $ $string =~ m/Bill Clinton$/; i $string =~ m/Bill Clinton/i; 371 -

  19. 21/9/2024 Web Crawler & Lexicon Generator ( 2) 371 -

  20. 21/9/2024 Perl Bash 240 140 1 4 : 371 -

  21. SOCKET Bash Programming: exec 5<>/dev/tcp/www2.ucy.ac.cy/80 exec 5>&- echo -e "GET $index HTTP/1.0\n" >&5 cat <&5 > /tmp/$USER/data/file.txt exec 5>&- exec 5<&- 21/9/2024 Perl: use IO::Socket; $page = www2.ucy.ac.cy ; my $socket = IO::Socket::INET->new(PeerAddr=>$page, PeerPort=>'80',Proto =>'tcp'); or die "cannot connect to port 80 at www2.ucy.ac.cy"; $name = "http://".$webpage; getstore($name, $textfile) or die 'Unable to get page'; close $server; 371 -

  22. 21/9/2024 sed '1,/^Content-Type:/d' file.txt | sed 's/<[^>]*>//g' | sed 's/<[^>]*$//g' | sed 's/^[^<]*>//g' | sed 's/&.*;//g' | sed 's/[^a-zA-Z]/ /g' | tr " " '\n' | sed '/^$/d' | tr '[:upper:]' '[:lower:]' open(FILE, $textfile); $line =~ s/[ \t\n\s]+/\n/g; { my @contents = (<FILE>); if ($line ne "\n") close(FILE); print OUTFILE $line; { open(OUTFILE, ">file1.txt"); } print OUTFILE lc($line); foreach $line (@contents) } { close(OUTFILE); } $line =~ s/<[^>]*>//g; open(FILE, "file1.txt"); $line =~ s/<[^>]*$//g; my @contents = (<FILE>); close(OUTFILE); $line =~ s/^[^<]*>//g; close(FILE); $line =~ s/\&[^;]*;//g; open(OUTFILE, ">file1.txt"); $line =~ s/[^a-zA-Z]/ /g; $line =~ s/^$//g; foreach $line (@contents) 371 -

  23. CRAWLER sed '1,/^Content-Type:/d' /tmp/$USER/data/file.txt > /tmp/$USER/data/content.txt cat /tmp/$USER/data/content.txt | grep -o '<a href[^>]*>\|<A HREF[^>]*>'| grep -o '"[^"]*"' | grep -o '"http:\/\/'$webpage'[^"]*"\|"\.\/[^"]*"\|"\.\.\/[^"]*"' | sed 's/"//g'| sed 's/http:\/\///g'| sed '/\.\/index\.html/d' | sed 's/^\.\.\//'$webpage'\//' | sed 's/^\.\//'$webpage'\//' | sed 's/\.\.\///g' | sort | uniq > /tmp/$USER/data/final.txt cat /tmp/$USER/data/final.txt | sed 's/'$webpage'//' >> /tmp/$USER/data/final2.txt 21/9/2024 cat /tmp/$USER/data/final2.txt | sort | uniq > /tmp/$USER/data/final2.txt open(FILE, $textfile); my @contents = (<FILE>); close(FILE); open(OUTFILE, ">file2.txt"); foreach $line(@contents) { if ($line =~ m/(<a href[^>]*>|<A HREF[^>]*>)/) { $x = $1."\n"; if ( $x =~ m/(\"[^\"]*\")/ ) { $x = $1."\n"; if ( $x =~ m/(\"http:\/\/$webpage[^\"]*\"|\"\.\/[^\"]*\"|\"\. \.\/[^\"]*\")/ ) { $x = $1."\n"; $x =~ s/\"//g; $x =~ s/http:\/\///g; print OUTFILE $x; } }}} close(OUTFILE); open(OUTFILE, "file2.txt"); my @contents = (<OUTFILE>); close(OUTFILE); open(OUTFILE, ">file2.txt"); foreach $line(@contents) { open(OUTFILE, ">file2.txt"); foreach $line(@c_unique) { print OUTFILE $line; } close(OUTFILE); open(OUTFILE, ">>allpages.txt"); foreach $line(@c_unique) { $line =~ s/$webpage//; print OUTFILE $line; } close(OUTFILE); open(OUTFILE, "allpages.txt"); my @contents = (<OUTFILE>); close(OUTFILE); my %c_hash = (); foreach my $line (@contents) { $c_hash{$line} = 1; } my @c_unique = keys(%c_hash); open(OUTFILE, ">allpages.txt"); foreach $line(@c_unique) { print OUTFILE $line; } close(OUTFILE); if (!( $line =~ m/\.\/index\.html/ )) { print OUTFILE $line; } } close(OUTFILE); open(OUTFILE, "file2.txt"); my @contents = (<OUTFILE>); close(OUTFILE); open(OUTFILE, ">file2.txt"); foreach $line(@contents) { $line =~ s/^\.\.\//$webpage\//; $line =~ s/^\.\//$webpage\//; $line =~ s/\.\.\///g; print OUTFILE $line; } close(OUTFILE); open(OUTFILE, "file2.txt"); my @contents = (<OUTFILE>); close(OUTFILE); my %c_hash = (); foreach my $line (@contents) { $c_hash{$line} = 1; } my @c_unique = keys(%c_hash); 371 -

  24. while ($depth < $ARGV[1]) { $depth++; open(FILE, "allpages.txt"); my @contents = (<FILE>); close(FILE); unlink("allpages.txt"); foreach my $url (@contents) { $name = "http://".$webpage.$url; getstore($name, $textfile) or die 'Unable to get page'; $contype = &contentType($textfile); if ($contype==1) { &lexicon($textfile); &crawler($ARGV[0], $textfile); print VISITED $webpage.$url; } else { print BROKEN $name; } } } 371 - 21/9/2024 until [ $count -eq $depth ] do ((count=count+1)); cat final2.txt | sort | uniq > allurls.txt rm -r final2.txt while read url do openSocket $url; kwdikosSelidas; value1=$? contentType; value2=$? if [[ $value1 == 1 && $value2 == 1 ]]; then crawler; lexicon; echo $webpage$url >> allvisited.txt fi closeSocket; done < allurls.txt cat allvisited.txt | sort | uniq -c > allvisited.txt done

  25. Perl 21/9/2024 Perl, bash Bash . Bash high-level . 371 -

  26. 21/9/2024 Learning Perl, Randal L. Schwaartz, Third Edition http://www.perl.org/ http://el.wikipedia.org/wiki/Perl http://dide.flo.sch.gr/Plinet/Tutorials/Tutorials-Perl.html http://www.eeei.gr/programming/perl/index.html http://www.docstoc.com/docs/23978204/Programming-in-Perl-History- Advantages-of-Perl-Perl-Is http://www.answerbag.com/q_view/16515 http://www.tipstoremember.com/benefits-of-perl-programming- language/ http://www.geekinterview.com/question_details/58751 371 -

More Related Content

giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#