Newer
Older
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#!/usr/bin/perl -w
#
# sta-fr22.pl
#
# Genere un fichier des stations pour cascade a partir des fichiers
# Seabird .btl
#
# $Id J Grelet may 2011$
#
use strict; # necessite de declarer toutes les variables globales
#use diagnostics;
use Time::Local;
use Date::Manip;
use File::Basename;
use Data::Dumper;
#------------------------------------------------------------------------------
# Les variables globales
#------------------------------------------------------------------------------
# fichier de sortie ASCII:
my $sta_file = "FR22_sta.list";
# fichiers bouteille seabird .btl
my $sbe_file;
my $ECHO = undef;
my ($s_date, $e_date, $date, $mois, $jour, $annee, $heure, $min, $time, $e_time);
my $station;
#------------------------------------------------------------------------------
# usage()
#------------------------------------------------------------------------------
sub usage() {
print STDERR "\nusage: sta-fr22.pl [options] <files>\n\n";
print STDERR "examples:\n\$ perl sta-fr22.pl ../../CTD/data/FR22*.btl
../../CTD/data/fr22*.btl\n";
exit 1;
}
#------------------------------------------------------------------------------
# Debut du programme principal
#------------------------------------------------------------------------------
&Date_Init( "TZ=UTC" );
&usage if( $#ARGV == -1);
# ouvre les fichiers de sortie
open( STA_FILE, "+> $sta_file" ) or die "Can't open file : $sta_file\n";
# parcourt des fichiers .btl passes en argument sur la ligne de commande
for( my $i = 0; $i <= $#ARGV; $i++ ){
my $fileName = $ARGV[$i];
# ouverture du fichier
open( DATA_FILE, $fileName );
print STDERR "\nLit: $fileName = " if defined $ECHO;
# recupere le numero de la station dans le nom du fichier
($station) = ($fileName =~ m/FR22(\d{3})/i);
# on lit le fichier bouteille
while( <DATA_FILE> ){
# decode la date et heure de debut de station
if( /System UpLoad Time =\s+(\.*)/) { # a modifier suivant le contexte
($time) = /System UpLoad Time =\s+(\w+\s+\d+\s+\d+\s+\d+:\d+:\d+)/;
$date=&ParseDate($time);
$s_date = &UnixDate($date,"%d/%m/%Y %H:%M:%S");
}
# decode la date de chaque prelevement
if( /^\s+\d+\s+\w+\s+\d+\s+\d+/) {
($time) = /\s+\d+\s+(\w+\s+\d+\s+\d+)/;
$date = &ParseDate($time);
$e_date = &UnixDate($date,"%d/%m/%Y");
}
# decode l'heure sur la ligne suivante
if( /\s+(\d+:\d+:\d+)/) {
($time) = /\s+(\d+:\d+:\d+)/;
$date = &ParseDate($time);
$e_time = &UnixDate($date,"%H:%M:%S");
}
}
# pour chaque fichier, on garde la date et heure de la derniere bouteille
# impression a l'ecran
printf STDERR "%d %s %s %s\n", $station, $s_date,$e_date,$e_time;
# impression dans le fichier
printf STA_FILE "%d %s %s %s\n", $station, $s_date,$e_date,$e_time;
}
printf STDERR "\n";;