Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: Ales 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
-
Je nějaký důvod nedělat to v php?
-
Chci se naucit Perl a tohle je ukazkova situace resp. cil
-
Perl pro zelenáče (od Satrapy).
-
Moje doporučení jsou:
Modern Perl http://modernperlbooks.com/ (http://modernperlbooks.com/)
Learn Perl in about 2 hours 30 minutes http://qntm.org/files/perl/perl.html (http://qntm.org/files/perl/perl.html) rychlý přehled
Seriál na Linuxsoft http://www.linuxsoft.cz/article_list.php?id_kategory=210 (http://www.linuxsoft.cz/article_list.php?id_kategory=210) česky
-
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.
-
Je nějaký důvod nedělat to v php?
a aky je dovod urobit to v PHP? je snad autor tohto threadu masochista?
-
Perl pro zelenáče (od Satrapy).
+1
-
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://perldoc.perl.org/functions/readdir.html)
http://zetcode.com/db/mysqlperl/ (http://zetcode.com/db/mysqlperl/)
-
Něco do začátku ...
#!/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";
}
}
-
a cely treba takhle:
#!/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 $!;