OVH Cloud OVH Cloud

Aide php vers perl

5 réponses
Avatar
Mél.
Bonjour,

J'ai le script suivant (pas très élaboré certes, mais il m'est bien utile
pour numéroter mes fichiers).
C'est un script php, que je dois passer sous perl car je change de serveur.
Mon problème est que je ne connais rien à perl.
Pouvez vous me donner un coup de main pour le "traduire" de php vers perl ?
<?
$i=0;
$adr=".";
$courant=opendir($adr);
while ($file = readdir($courant)) {
if(substr($file,-4)!=".tmp"){
$i++;}
}
closedir($courant);
$n="D-".$i;
echo "<h3>Numéro de devis : $n</h3>";
?>

Merci beaucoup.
Mél.

5 réponses

Avatar
Benoit Izac
Bonjour,

le 01/08/2003 à 13:50, "Mél." a écrit
dans le message <bgdk9i$6do$ :

J'ai le script suivant (pas très élaboré certes, mais il m'est bien utile
pour numéroter mes fichiers).
C'est un script php, que je dois passer sous perl car je change de serveur.
Mon problème est que je ne connais rien à perl.
Pouvez vous me donner un coup de main pour le "traduire" de php vers perl ?
<?
$i=0;
$adr=".";
$courant=opendir($adr);
while ($file = readdir($courant)) {
if(substr($file,-4)!=".tmp"){
$i++;}
}
closedir($courant);
$n="D-".$i;
echo "<h3>Numéro de devis : $n</h3>";
?>


Je n'y connais rien à PHP mais on va essayer ;-)

Si j'ai bien compris tu veux afficher :
D-« le nombre de fichiers *.tmp ».
C'est ça ?

#!/usr/bin/perl -w
use strict;

my $adr = ".";
my @files;

opendir DIR, $adr
or die "can't open $adr: $!";
@files = grep { /.tmp$/ } readdir DIR
|| die "can't read $adr: $!";
closedir DIR
or die "can't close $adr: $!";

print "<h3>Numéro de devis : D-" . @files . "</h3>n";
__END__

--
Benoit Izac

Avatar
Ronan Le Hy
Ronan Le Hy a écrit des bêtises:
Mél. a écrit:
J'ai le script suivant (pas très élaboré certes, mais il m'est bien utile
pour numéroter mes fichiers).
Pouvez vous me donner un coup de main pour le "traduire" de php vers
perl ?
$i=0;
$adr=".";
$courant=opendir($adr);
while ($file = readdir($courant)) {
if(substr($file,-4)!=".tmp"){
$i++;}
}
closedir($courant);
$n="D-".$i;
echo "<h3>Numéro de devis : $n</h3>";


#!/usr/bin/perl
[snip -- ne correspond pas à la question]
}


Bah, j'ai mal lu. Deuxième tentative.

#!/usr/bin/perl

use warnings;
use strict;

my $adr = '.';
my $i = scalar( () = <$adr/*.tmp> );
my $n = "D-$i";
print "<h3>Numéro de devis : $n</h3>n";

--
Ronan


Avatar
Benoit Izac
Bonjour,

le 01/08/2003 à 14:14, Ronan Le Hy a écrit
dans le message <3f2a59be$0$24761$ :

for (<$adr/*.tmp>)


Attention, le fichier « ./.dot.tmp » ne sera pas pris en compte dans ce
script.

Si ce n'est pas nécessaire, on peut faire plus concis :

perl -mstrict -we '@_ = <./*.tmp>; print "D-" . @_ . "n";'

--
Benoit Izac

Avatar
Laurent Wacrenier
Benoit Izac écrit:
Je n'y connais rien à PHP mais on va essayer ;-)


Moi non plus

Si j'ai bien compris tu veux afficher :
D-« le nombre de fichiers *.tmp ».
C'est ça ?


Ou l'opposé, va savoir...

print "<h3> Devis: D-", scalar (grep {!/.tmp/} <*>), "</h3>";

Avatar
Mél.
Si j'ai bien compris tu veux afficher :
D-« le nombre de fichiers *.tmp ».
C'est ça ?


Non, c'est le nombre de fichier quelque soit leurs extensions, sauf les

*.tmp

Merci de votre aide :-))

Mél.