Perl - knížka pro začátečníka

Ales

Perl - knížka pro začátečníka
« kdy: 01. 09. 2015, 19:30:47 »
Zdravim,
poradil by nekdo nejakou knizku vhodnou pro zacatecnika Perlu?

Chtel bych si napsat skript, kterej dovede precist vsechny adresare v dir. Nasledovne ulozit vsechna jmena a velikosti adresaru do DB - MYSQL.
Mam nejake zakladni zkusenosti s PHP a Bash
« Poslední změna: 01. 09. 2015, 19:48:34 od Petr Krčmář »


analytik

Re:Perl - knížka pro začátečníka
« Odpověď #1 kdy: 01. 09. 2015, 19:56:59 »
Je nějaký důvod nedělat to v php?

Ales

Re:Perl - knížka pro začátečníka
« Odpověď #2 kdy: 01. 09. 2015, 20:03:27 »
Chci se naucit Perl a tohle je ukazkova situace resp. cil

McFly

  • *****
  • 613
    • Zobrazit profil
    • E-mail
Re:Perl - knížka pro začátečníka
« Odpověď #3 kdy: 01. 09. 2015, 21:08:54 »
Perl pro zelenáče (od Satrapy).

wamba

Re:Perl - knížka pro začátečníka
« Odpověď #4 kdy: 01. 09. 2015, 21:25:52 »
Moje doporučení jsou:

Modern Perl http://modernperlbooks.com/

Learn Perl in about 2 hours 30 minutes http://qntm.org/files/perl/perl.html rychlý přehled

Seriál na Linuxsoft http://www.linuxsoft.cz/article_list.php?id_kategory=210 česky


JardaP .

  • *****
  • 11 064
    • Zobrazit profil
    • E-mail
Re:Perl - knížka pro začátečníka
« Odpověď #5 kdy: 02. 09. 2015, 00:18:09 »
Nakladatelstvi O'Reilly kdysi obcas melo nejakou knizku ke stazeni v PDF na jejich sajte. Podivejte se, jestli nebudete mit kliku a nevali se tam Perl.

untermensch

Re:Perl - knížka pro začátečníka
« Odpověď #6 kdy: 02. 09. 2015, 00:36:51 »
Je nějaký důvod nedělat to v php?

a aky je dovod urobit to v PHP? je snad autor tohto threadu masochista?

Unknown

Re:Perl - knížka pro začátečníka
« Odpověď #7 kdy: 02. 09. 2015, 01:27:01 »
Perl pro zelenáče (od Satrapy).

+1

Kit

Re:Perl - knížka pro začátečníka
« Odpověď #8 kdy: 02. 09. 2015, 06:23:55 »
Je nějaký důvod nedělat to v php?

a aky je dovod urobit to v PHP? je snad autor tohto threadu masochista?

V PHP to není žádný masochismus - je to na pár řádek.

Když to chce to v Perlu, tak to chce v Perlu.
http://perldoc.perl.org/functions/readdir.html
http://zetcode.com/db/mysqlperl/

RH

Re:Perl - knížka pro začátečníka
« Odpověď #9 kdy: 02. 09. 2015, 09:42:53 »
Něco do začátku ...
Kód: [Vybrat]
#!/usr/bin/perl
use strict;
use warnings;

my $srcdir = './';

opendir( SDIR, $srcdir ) or die "Can't opendir $srcdir, $!";
my @files = readdir(SDIR);
closedir SDIR or die "Can't closedir $srcdir, $!";

foreach my $item ( sort @files ) {

    #next if $item =~ /^\.{1,2}$/;
    my $fpath = $srcdir . $item;

    if ( -d $fpath ) {
        my (
            $dev,  $ino,   $mode,  $nlink, $uid,     $gid, $rdev,
            $size, $atime, $mtime, $ctime, $blksize, $blocks
        ) = stat($fpath);

        print "File: $srcdir$item\t\tSize: $size\n";
    }
}

RH

Re:Perl - knížka pro začátečníka
« Odpověď #10 kdy: 02. 09. 2015, 13:37:49 »
a cely treba takhle:
Kód: [Vybrat]
#!/usr/bin/perl
use DBI;
use strict;
use warnings;

## GRANT ALL ON test.* TO test@'%' IDENTIFIED BY 'test';
## CREATE TABLE `dirlist` (`fpath` TEXT NOT NULL, `fsize` INT(11) NOT NULL) COLLATE='utf8_general_ci' ENGINE=MyISAM;

my $srcdir = $ARGV[0] || './';
$srcdir = $srcdir . '/' unless $srcdir =~ /\/$/;

die "$srcdir is not directory\n" unless -d $srcdir;

my $host     = '127.0.0.1';
my $database = 'test';
my $user     = 'test';
my $password = 'test';

my $dsn = qq[DBI:mysql:database=$database;host=$host];
my $dbh =
  DBI->connect( $dsn, $user, $password,
    { PrintError => 1, RaiseError => 1, AutoCommit => 1 } )
  or die DBI->errstr;

my $sth_ins = $dbh->prepare(qq[INSERT INTO dirlist (fpath, fsize) VALUES (?,?)])
  or die $dbh->errstr;

opendir( SDIR, $srcdir ) or die "Can't opendir $srcdir, $!";
my @files = readdir(SDIR);
closedir SDIR or die "Can't closedir $srcdir, $!";

foreach my $item ( sort @files ) {

    #next if $item =~ /^\.{1,2}$/;
    my $fpath = $srcdir . $item;

    if ( -d $fpath ) {
        my (
            $dev,  $ino,   $mode,  $nlink, $uid,     $gid, $rdev,
            $size, $atime, $mtime, $ctime, $blksize, $blocks
        ) = stat($fpath);

        $sth_ins->execute( $fpath, $size ) or die $dbh->errstr;
        print "File: $fpath\t\tSize: $size\n";
    }
}

$sth_ins->finish or die $!;
$dbh->disconnect or die $!;