Bonjour,
Je voulais migrer un script depuis Linux vers Windows mais ce dernier utilise une fonction qui semble ne pas être disponible sous Windows : strptime
Quelqu'un connait une fonction équivalente ?
Merci
Bonjour,
Je voulais migrer un script depuis Linux vers Windows mais ce dernier utilise une fonction qui semble ne pas être disponible sous Windows : strptime
Quelqu'un connait une fonction équivalente ?
Merci
qu'est ce que strptime est censé faire?
- Les meilleurs cours et tutoriels Perl et Perl 6 pour vous former ;
- FAQ Perl, Perl 6 et Perl/Tk d'entraide ;
- Les news sur la rubrique Perl ;
- S'abonner au compte Twitter de la rubrique Perl ;
- Mes tutoriels developpez.com.
Pas de questions technique par messagerie privée (lisez les règles du forum Perl) et pour les nouveaux !
En fait, je veux migrer un script perl pour faire la conversion d'une page html (provenant d'un wiki appelé tiddlywiki) vers des fichiers textes qui peuvent être importés dans MediaWiki par la suite.
Voici le code
strptime retourne la chaine selon le format demandé.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55 #!/usr/local/bin/perl use POSIX qw(strftime); #use POSIX::strptime; #system "rm -rf tiddly2twiki.files/"; print "Starting\n"; mkdir "tiddly2twiki.files"; chdir "tiddly2twiki.files" || die "Could not chdir"; open TIDDLY, '<', '../notes.html' || die "Could not open input file"; print "Reading input file\n"; while(<TIDDLY>){ # m is the match operator next unless m#^<div title="(.*?)".*modified="(\d+)".*?>(.*)#; my $title=$1; my $tiddate=$2; my $tiddler; my $line = <TIDDLY>; while (!($line =~ /div/)) { $tiddler = $tiddler.$line; $line = <TIDDLY>; } #print $tiddler."\n"; #print $1.$2.$3."\n"; #my $twikidate=strftime('%s',POSIX::strptime($tiddate,'%Y%m%d%H%M')); #my $filetitle=`grep -m1 "[^:]*:$title\$" ../tiddly2twiki.titlemap`; my $filetitle=$title; chomp($filetitle); # removes \n $filetitle=~s/:.*//; $filetitle.=".txt"; print "$filetitle\n"; open OUT, '>', $filetitle; print OUT "=$title=\n"; # substitutions (To make a global substitution the last slash is followed by a g) $tiddler=~s/<(.*)pre>//g; $tiddler=~s#\\n#\n#g; $tiddler=~s#\[\[(.*?)\|(.*?)\]\]#[[\2][\1]]#g; $tiddler=~s#^!!!#---++++#mg; $tiddler=~s#^!!#---+++#mg; #$tiddler=~s#^!#---++#mg; $tiddler=~s#^!.*#==.*==#mg; $tiddler=~s#^\*\* # * #mg; $tiddler=~s#^[*-] # * #mg; $tiddler=~s/^# / 1. /mg; $tiddler=~s#\{\{\{#<verbatim>#g; $tiddler=~s#\}\}\}#</verbatim>#g; $tiddler=~s#\|\|#|.|#g; $tiddler=~s#(?<=\|)\>(?=\|)##g; $tiddler=~s#(?<=\|)!([^|]+)(?=\|)#*$1*#g; print OUT $tiddler."\n"; } print "Done\n";
($sec, $min, $hour, $mday, $mon, $year, $wday, $yday) = POSIX::strptime("string", "Format");
Il y a également autre chose que je désire faire dans ce script mais je n'ai toujours pas trouvé la bonne syntaxe.
Comment puis-je remplacer la chaine "!TEXTE" par "==TEXTE==" ?
Merci
Ok,j'ai trouvé la réponse pour la deuxième question :
Code : Sélectionner tout - Visualiser dans une fenêtre à part $tiddler=~s#^!(.*)#==\1==#mg;
Partager