From eperalesaac.upc.edu Tue May 16 07:08:05 2006 From: eperalesaac.upc.edu (Eva Perales Laguna) Date: Tue, 16 May 2006 16:08:05 +0200 Subject: [bcn-pm] Date::Manip Message-ID: <20060516140805.GC26058@ac.upc.edu> Hola nois, usant Date::Manip en dues màquines amb versions diferents de perl (5.6 i 5.8) m'he trobat el següent: Executant perl -MDate::Manip -le 'Date_Init("DateFormat=non-US"); $x = DateCalc("29/09/2005","-15d"); print $x,"\n"' el resultat és 2005091400:00:00 a la màquina amb perl 5.6 (Date::Manip 5.40) però és +0:0:482:6:22:0:0 a la màquina amb perl 5.8 (Date::Manip 5.42) El resultat correcte l'aconsegueixo a la màquina amb perl 5.8 executant perl -MDate::Manip -le 'Date_Init("DateFormat=non-US"); $x = DateCalc("29/09/2005","- 15d"); print $x,"\n"' Fixeu-vos en l'espai entre el signe - i el 15. ¿A algú li sona que sigui un bug conegut o simplement és un canvi introduït a les noves versions? A la llista de canvis del mòdul no hi he trobat res... Gràcies Eva From fxnahashref.com Tue May 16 12:42:02 2006 From: fxnahashref.com (Xavier Noria) Date: Tue, 16 May 2006 21:42:02 +0200 Subject: [bcn-pm] Date::Manip In-Reply-To: <20060516140805.GC26058@ac.upc.edu> References: <20060516140805.GC26058@ac.upc.edu> Message-ID: On May 16, 2006, at 16:08, Eva Perales Laguna wrote: > Executant > > perl -MDate::Manip -le 'Date_Init("DateFormat=non-US"); $x = > DateCalc("29/09/2005","-15d"); print $x,"\n"' > > el resultat és 2005091400:00:00 a la màquina amb perl 5.6 > (Date::Manip 5.40) > però és +0:0:482:6:22:0:0 a la màquina amb perl 5.8 (Date::Manip 5.42) > > El resultat correcte l'aconsegueixo a la màquina amb perl 5.8 > executant > > perl -MDate::Manip -le 'Date_Init("DateFormat=non-US"); $x = > DateCalc("29/09/2005","- 15d"); print $x,"\n"' > > Fixeu-vos en l'espai entre el signe - i el 15. > > > ¿A algú li sona que sigui un bug conegut o simplement és un canvi > introduït a > les noves versions? > A la llista de canvis del mòdul no hi he trobat res... Sembla que les versions anteriors del modul se les han cepillat de CPAN i no puc fer servir el diff de http://search.cpan.org/tools/DateManip per mirar-ho. El codi es troba a l'arxiu Manip.pm, podries fer un diff i enviar-lo? diff -u Manip-5.40.pm Manip-5.42.pm > Manip.patch -- fxn From wjperezdagencat.net Wed May 17 00:00:18 2006 From: wjperezdagencat.net (Jose Luis Perez Diez) Date: Wed, 17 May 2006 09:00:18 +0200 Subject: [bcn-pm] Date::Manip In-Reply-To: References: <20060516140805.GC26058@ac.upc.edu> Message-ID: <200605170900.19352.wjperezd@gencat.net> On Tuesday 16 May 2006 21:42, Xavier Noria wrote: > > ¿A algú li sona que sigui un bug conegut o simplement és un canvi   > > introduït a > > les noves versions? > > A la llista de canvis del mòdul no hi he trobat res... > > Sembla que les versions anteriors del modul se les han cepillat de   > CPAN i no puc fer servir el diff de > >    http://search.cpan.org/tools/DateManip Em sembla que el canvi es a ParseDate mireu la sortida: perl -MDate::Manip -le 'Date_Init("DateFormat=Non-US"); print ParseDate("-12d")."VS".ParseDate("- 12d")."\n"' 2011123122:00:00VS2006050508:49:38 Sembla que en el primer cas el paramentre no es tratat com a Delta From eperalesaac.upc.edu Wed May 17 05:47:53 2006 From: eperalesaac.upc.edu (Eva Perales Laguna) Date: Wed, 17 May 2006 14:47:53 +0200 Subject: [bcn-pm] Date::Manip In-Reply-To: References: <20060516140805.GC26058@ac.upc.edu> Message-ID: <20060517124753.GB2687@ac.upc.edu> On Tue, May 16, 2006 at 09:42:02PM +0200, Xavier Noria wrote: > > Sembla que les versions anteriors del modul se les han cepillat de > CPAN i no puc fer servir el diff de > > http://search.cpan.org/tools/DateManip > > per mirar-ho. El codi es troba a l'arxiu Manip.pm, podries fer un > diff i enviar-lo? > > diff -u Manip-5.40.pm Manip-5.42.pm > Manip.patch > M'he estat mirant el resultat del diff i sembla que la cosa está en els canvis fets a la Us adjunto els tres fitxers (Manip-5.40.pm, Manip-5.42.pm i Manip.patch) -- Eva -------------- següent part -------------- Un adjunt de no-text ha estat eliminat... Nom: Manip-5.40.pm Tipus: application/x-perl volum: 209007 bytes Desc: no disponible Url : http://mail.pm.org/pipermail/barcelona-pm/attachments/20060517/b2b8ba97/attachment-0002.bin -------------- següent part -------------- Un adjunt de no-text ha estat eliminat... Nom: Manip-5.42.pm Tipus: application/x-perl volum: 233596 bytes Desc: no disponible Url : http://mail.pm.org/pipermail/barcelona-pm/attachments/20060517/b2b8ba97/attachment-0003.bin -------------- següent part -------------- --- Manip-5.40.pm Wed May 17 14:24:07 2006 +++ Manip-5.42.pm Wed May 17 14:25:02 2006 @@ -1,13 +1,12 @@ package Date::Manip; - -# Copyright (c) 1995-2001 Sullivan Beck. All rights reserved. +# Copyright (c) 1995-2003 Sullivan Beck. All rights reserved. # This program is free software; you can redistribute it and/or modify it # under the same terms as Perl itself. ########################################################################### ########################################################################### -use vars qw($OS %Lang %Holiday %Events %Curr %Cnf %Zone); +use vars qw($OS %Lang %Holiday %Events %Curr %Cnf %Zone $VERSION @ISA @EXPORT); # Determine the type of OS... $OS="Unix"; @@ -19,6 +18,8 @@ $ENV{OS} =~ /MSWin32/i || $ENV{OS} =~ /Windows_95/i || $ENV{OS} =~ /Windows_NT/i)); +$OS="Netware" if (defined $^O and + $^O =~ /NetWare/i); $OS="Mac" if ((defined $^O and $^O =~ /MacOS/i) || (defined $ENV{OS} and @@ -31,7 +32,7 @@ $^O =~ /VMS/i); # Determine if we're doing taint checking -$NoTaint = eval { local $^W; unlink "$^X$^T"; 1 }; +$Date::Manip::NoTaint = eval { local $^W; unlink "$^X$^T"; 1 }; ########################################################################### # CUSTOMIZATION @@ -50,12 +51,17 @@ # expansions are allowed. This should be set in Date_Init arguments or in # the global config file. -aDatePath=(); +aDate::Manip::DatePath=(); if ($OS eq "Windows") { $Cnf{"PathSep"} = ";"; $Cnf{"PersonalCnf"} = "Manip.cnf"; $Cnf{"PersonalCnfPath"} = "."; +} elsif ($OS eq "Netware") { + $Cnf{"PathSep"} = ";"; + $Cnf{"PersonalCnf"} = "Manip.cnf"; + $Cnf{"PersonalCnfPath"} = "."; + } elsif ($OS eq "MPE") { $Cnf{"PathSep"} = ":"; $Cnf{"PersonalCnf"} = "Manip.cnf"; @@ -73,16 +79,16 @@ } elsif ($OS eq "VMS") { # VMS doesn't like files starting with "." - $Cnf{"PathSep"} = ":"; + $Cnf{"PathSep"} = "\n"; $Cnf{"PersonalCnf"} = "Manip.cnf"; - $Cnf{"PersonalCnfPath"} = ".:~"; + $Cnf{"PersonalCnfPath"} = ".\n~"; } else { # Unix $Cnf{"PathSep"} = ":"; $Cnf{"PersonalCnf"} = ".DateManip.cnf"; $Cnf{"PersonalCnfPath"} = ".:~"; - @DatePath=qw(/bin /usr/bin /usr/local/bin); + @Date::Manip::DatePath=qw(/bin /usr/bin /usr/local/bin); } ### Date::Manip variables set in the global or personal config file @@ -198,8 +204,7 @@ use IO::File; -use vars qw($VERSION); -$VERSION="5.40"; +$VERSION="5.42"; ######################################################################## ######################################################################## @@ -363,6 +368,15 @@ } elsif ($L eq "Italian") { &Date_Init_Italian(\%lang); + } elsif ($L eq "Russian") { + &Date_Init_Russian(\%lang); + + } elsif ($L eq "Turkish") { + &Date_Init_Turkish(\%lang); + + } elsif ($L eq "Danish") { + &Date_Init_Danish(\%lang); + } else { confess "ERROR: Unknown language in Date::Manip.\n"; } @@ -538,22 +552,32 @@ "cst -0600 ". # Central Standard "cdt -0500 ". # Central Daylight "est -0500 ". # Eastern Standard + "act -0500 ". # Brazil, Acre "sat -0400 ". # Chile + "bot -0400 ". # Bolivia + "amt -0400 ". # Brazil, Amazon + "acst -0400 ". # Brazil, Acre Daylight "edt -0400 ". # Eastern Daylight "ast -0400 ". # Atlantic Standard #"nst -0330 ". # Newfoundland Standard nst=North Sumatra +0630 "nft -0330 ". # Newfoundland #"gst -0300 ". # Greenland Standard gst=Guam Standard +1000 #"bst -0300 ". # Brazil Standard bst=British Summer +0100 + "brt -0300 ". # Brazil Standard (official time) + "brst -0300 ". # Brazil Standard "adt -0300 ". # Atlantic Daylight + "art -0300 ". # Argentina + "amst -0300 ". # Brazil, Amazon Daylight "ndt -0230 ". # Newfoundland Daylight + "brst -0200 ". # Brazil Daylight (official time) + "fnt -0200 ". # Brazil, Fernando de Noronha "at -0200 ". # Azores "wat -0100 ". # West Africa + "fnst -0100 ". # Brazil, Fernando de Noronha Daylight "gmt +0000 ". # Greenwich Mean "ut +0000 ". # Universal "utc +0000 ". # Universal (Coordinated) "wet +0000 ". # Western European - "west +0000 ". # Alias for Western European "cet +0100 ". # Central European "fwt +0100 ". # French Winter "met +0100 ". # Middle European @@ -562,6 +586,7 @@ "swt +0100 ". # Swedish Winter "bst +0100 ". # British Summer bst=Brazil standard -0300 "gb +0100 ". # GMT with daylight savings + "west +0000 ". # Western European Daylight "eet +0200 ". # Eastern Europe, USSR Zone 1 "cest +0200 ". # Central European Summer "fst +0200 ". # French Summer @@ -576,27 +601,34 @@ "eetedt +0300 ". # Eastern Europe, USSR Zone 1 "idt +0300 ". # Israel Daylight "msk +0300 ". # Moscow + "eat +0300 ". # East Africa "it +0330 ". # Iran "zp4 +0400 ". # USSR Zone 3 "msd +0400 ". # Moscow Daylight "zp5 +0500 ". # USSR Zone 4 "ist +0530 ". # Indian Standard "zp6 +0600 ". # USSR Zone 5 + "novst +0600 ". # Novosibirsk time zone, Russia "nst +0630 ". # North Sumatra nst=Newfoundland Std -0330 #"sst +0700 ". # South Sumatra, USSR Zone 6 sst=Swedish Summer +0200 + "javt +0700 ". # Java "hkt +0800 ". # Hong Kong "sgt +0800 ". # Singapore "cct +0800 ". # China Coast, USSR Zone 7 - "awst +0800 ". # West Australian Standard + "awst +0800 ". # Australian Western Standard "wst +0800 ". # West Australian Standard "pht +0800 ". # Asia Manila "kst +0900 ". # Republic of Korea "jst +0900 ". # Japan Standard, USSR Zone 8 "rok +0900 ". # Republic of Korea + "acst +0930 ". # Australian Central Standard "cast +0930 ". # Central Australian Standard + "aest +1000 ". # Australian Eastern Standard "east +1000 ". # Eastern Australian Standard "gst +1000 ". # Guam Standard, USSR Zone 9 gst=Greenland Std -0300 + "acdt +1030 ". # Australian Central Daylight "cadt +1030 ". # Central Australian Daylight + "aedt +1100 ". # Australian Eastern Daylight "eadt +1100 ". # Eastern Australian Daylight "idle +1200 ". # International Date Line East "nzst +1200 ". # New Zealand Standard @@ -881,18 +913,18 @@ $tmp=0; $tmp=1 if (/$mnsec$zone2?\s*$/i); # or /$mnsec$zone/ ?? $tmp=0 if (/$ampmexp/i); - if (s/$apachetime$zone()/$1 /i || - s/$apachetime$zone2?/$1 /i || - s/(^|[^a-z])$at\s*$D$mnsec$zone()/$1 /i || - s/(^|[^a-z])$at\s*$D$mnsec$zone2?/$1 /i || - s/(^|[^0-9])(\d)$mnsec$zone()/$1 /i || - s/(^|[^0-9])(\d)$mnsec$zone2?/$1 /i || + if (s/$apachetime$zone()/$1 /i || + s/$apachetime$zone2?/$1 /i || + s/(^|[^a-z])$at\s*$D$mnsec$zone()/$1 /i || + s/(^|[^a-z])$at\s*$D$mnsec$zone2?/$1 /i || + s/(^|[^0-9])(\d)$mnsec$zone()/$1 /i || + s/(^|[^0-9])(\d)$mnsec$zone2?/$1 /i || (s/(t)$D$mnsec$zone()/$1 /i and (($iso=-$tmp) || 1)) || (s/(t)$D$mnsec$zone2?/$1 /i and (($iso=-$tmp) || 1)) || - (s/()$DD$mnsec$zone()/ /i and (($iso=$tmp) || 1)) || - (s/()$DD$mnsec$zone2?/ /i and (($iso=$tmp) || 1)) || - s/(^|$at\s*|\s+)$D()()\s*$ampmexp$zone()/ /i || - s/(^|$at\s*|\s+)$D()()\s*$ampmexp$zone2?/ /i || + (s/()$DD$mnsec$zone()/ /i and (($iso=$tmp) || 1)) || + (s/()$DD$mnsec$zone2?/ /i and (($iso=$tmp) || 1)) || + s/(^|$at\s*|\s+)$D()()\s*$ampmexp$zone()/ /i || + s/(^|$at\s*|\s+)$D()()\s*$ampmexp$zone2?/ /i || 0 ) { ($h,$mn,$s,$ampm,$z,$z2)=($2,$3,$4,$5,$6,$7); @@ -923,43 +955,40 @@ # dateTtime ISO 8601 formats my($orig)=$_; s/t$//i if ($iso<0); - + # Parse ISO 8601 dates now (which may still have a zone stuck to it). - if ( ($iso && /^[0-9-]+(W[0-9-]+)?$zone?$/i) || - ($iso && /^[0-9-]+(W[0-9-]+)?$zone2?$/i) || - ($iso && /^[0-9-]+(T[0-9-]+)?$zone?$/i) || - ($iso && /^[0-9-]+(T[0-9-]+)?$zone2?$/i) || + if ( ($iso && /^([0-9-]+(?:W[0-9-]+)?)$zone?$/i) || + ($iso && /^([0-9-]+(?:W[0-9-]+)?)$zone2?$/i) || + ($iso && /^([0-9-]+(?:T[0-9-]+)?)$zone?$/i) || + ($iso && /^([0-9-]+(?:T[0-9-]+)?)$zone2?$/i) || 0) { # ISO 8601 dates + ($_,$z,$z2) = ($1,$2); s,-, ,g; # Change all ISO8601 seps to spaces s/^\s+//; s/\s+$//; - if (/^$D4\s*$DD\s*$DD\s*t?$DD(?:$DD(?:$DD\d*)?)?$zone2?$/i || - /^$D4\s*$DD\s*$DD\s*t?$DD(?:$DD(?:$DD\d*)?)?$zone?()$/i || - /^$DD\s+$DD\s*$DD\s*t?$DD(?:$DD(?:$DD\d*)?)?$zone2?$/i || - /^$DD\s+$DD\s*$DD\s*t?$DD(?:$DD(?:$DD\d*)?)?$zone?()$/i || + if (/^$D4\s*$DD\s*$DD\s*t?$DD(?:$DD(?:$DD(\d*))?)?$/i || + /^$DD\s+$DD\s*$DD\s*t?$DD(?:$DD(?:$DD(\d*))?)?$/i || 0 ) { # ISO 8601 Dates with times - # YYYYMMDDHHMNSSFFFF + # YYYYMMDDHHMNSSFFFF... # YYYYMMDDHHMNSS # YYYYMMDDHHMN # YYYYMMDDHH - # YY MMDDHHMNSSFFFF + # YY MMDDHHMNSSFFFF... # YY MMDDHHMNSS # YY MMDDHHMN # YY MMDDHH - ($y,$m,$d,$h,$mn,$s,$tmp,$z2)=($1,$2,$3,$4,$5,$6,$7,$8); + ($y,$m,$d,$h,$mn,$s,$tmp)=($1,$2,$3,$4,$5,$6,$7); if ($h==24 && (! defined $mn || $mn==0) && (! defined $s || $s==0)) { $h=0; $midnight=1; } - $z="" if (! $h); - return "" if ($tmp and $z); - $z=$tmp if ($tmp and $tmp); - return "" if ($time); + $z = "" if (! defined $h); + return "" if ($time && defined $h); last PARSE; } elsif (/^$D4(?:\s*$DD(?:\s*$DD)?)?$/ || @@ -1220,9 +1249,9 @@ $m=$Curr{"M"}; last PARSE; } - $tmp=lc($2); - $tmp=$dom{"$tmp"}; - s/(^|[^a-z])$dom($|[^a-z])/$1 $tmp $3/i; + my $from = $2; + my $to = $dom{ lc($from) }; + s/(^|[^a-z])$from($|[^a-z])/$1 $to $2/i; s/^\s+//; s/\s+$//; } @@ -1232,11 +1261,12 @@ # 22nd sunday in 1996 ($which,$dofw,$y)=($1,$2,$3); $y=$Curr{"Y"} if (! $y); - $tmp=&Date_GetNext("$y-01-01",$dofw,0); + $y--; # previous year + $tmp=&Date_GetNext("$y-12-31",$dofw,0); if ($which>1) { $tmp=&DateCalc_DateDelta($tmp,"+0:0:".($which-1).":0:0:0:0",\$err,0); } - ($y,$m,$d)=(&Date_Split($tmp))[0..2]; + ($y,$m,$d)=(&Date_Split($tmp, 1))[0..2]; last PARSE; } elsif (/^$week$wkabb\s*$D(?:$of?\s*$YY)?$/i || /^$week\s*$D$wkabb(?:$of?\s*$YY)?$/i) { @@ -1527,7 +1557,9 @@ my($workweek)=$Cnf{"WorkWeekEnd"}-$Cnf{"WorkWeekBeg"}+1; &Date_Init() if (! $Curr{"InitDone"}); - my($signexp)='([+-]?)'; + # A sign can be a sequence of zero or more + and - signs, this + # allows for deltas like '+ -2 days'. + my($signexp)='((?:[+-]\s*)*)'; my($numexp)='(\d+)'; my($exp1)="(?: \\s* $signexp \\s* $numexp \\s*)"; my($yexp,$mexp,$wexp,$dexp,$hexp,$mnexp,$sexp,$i)=(); @@ -1638,6 +1670,16 @@ $val=$2 if ($2); $sign=$1 if ($1); } + + # Collapse a sign like '+ -' into a single character like '-', + # by counting the occurrences of '-'. + # + $sign =~ s/\s+//g; + $sign =~ tr/+//d; + my $count = ($sign =~ tr/-//d); + die "bad characters in sign: $sign" if length $sign; + $sign = $count % 2 ? '-' : '+'; + push(@delta,"$sign$val"); } if (! /^\s*$/) { @@ -1684,7 +1726,7 @@ return if (! $date); my($y,$m,$d,$h,$mn,$s)=($f{"Y"},$f{"m"},$f{"d"},$f{"H"},$f{"M"},$f{"S"})= - &Date_Split($date); + &Date_Split($date, 1); $f{"y"}=substr $f{"Y"},2; &Date_Init() if (! $Curr{"InitDone"}); @@ -1779,7 +1821,7 @@ $f{"s"}=&Date_SecsSince1970GMT($m,$d,$y,$h,$mn,$s); $f{"Z"}=($Cnf{"ConvTZ"} eq "IGNORE" or $Cnf{"ConvTZ"} eq "") ? $Cnf{"TZ"} : $Cnf{"ConvTZ"}; - $f{"z"}=($Zone{"n2o"}{lc $f{"Z"}} || ""); + $f{"z"}=($f{"Z"}=~/^[+-]\d{4}/) ? $f{"Z"} : ($Zone{"n2o"}{lc $f{"Z"}} || ""); # date, time $f{"c"}=qq|$f{"a"} $f{"b"} $f{"e"} $h:$mn:$s $y|; @@ -1876,17 +1918,23 @@ } # Length of each unit in seconds - my($sl,$ml,$hl,$dl,$wl)=(); + my($sl,$ml,$hl,$dl,$wl,$yl)=(); $sl = 1; $ml = $sl*60; $hl = $ml*60; $dl = $hl*24; $wl = $dl*7; + $yl = $dl*365.25; # The decimal amount of each unit contained in all smaller units my($yd,$Md,$sd,$md,$hd,$dd,$wd)=(); - $yd = $M/12; - $Md = 0; + if ($M) { + $yd = $M/12; + $Md = 0; + } else { + $yd = ($w*$wl + $d*$dl + $h*$hl + $m*$ml + $s*$sl)/$yl; + $Md = 0; + } $wd = ($d*$dl + $h*$hl + $m*$ml + $s*$sl)/$wl; $dd = ($h*$hl + $m*$ml + $s*$sl)/$dl; @@ -1897,10 +1945,17 @@ # The amount of each unit contained in higher units. my($yh,$Mh,$sh,$mh,$hh,$dh,$wh)=(); $yh = 0; - $Mh = ($yh+$y)*12; - $wh = 0; - $dh = ($wh+$w)*7; + if ($M) { + $Mh = ($yh+$y)*12; + $wh = 0; + $dh = ($wh+$w)*7; + } else { + $Mh = 0; + $wh = ($yh+$y)*365.25/7; + $dh = ($yh+$y)*365.25 + $w*7; + } + $hh = ($dh+$d)*24; $mh = ($hh+$h)*60; $sh = ($mh+$m)*60; @@ -2145,8 +2200,9 @@ @recur0=(0,1); @recur1=($num,$d,0,0,0); - } elsif (/^$D$wkexp(?:$of$mmm?$Y)?$/i || - /^$D$wkexp(?:$of$mmm())?$/i) { + } elsif (/^$D?$wkexp(?:$of$mmm?$Y)?$/i || + /^$D?$wkexp(?:$of$mmm())?$/i) { + # every tuesday in june 1997 # every 2nd tuesday in june 1997 ($num,$d,$m,$y)=($1,$2,$3,$4); $y=$Curr{"Y"} if (! $y); @@ -2421,9 +2477,9 @@ @d=sort { $a<=>$b } (@d); # We need to find years that are a multiple of $n from $y(base) - ($y0)=( &Date_Split($date0) )[0]; - ($y1)=( &Date_Split($date1) )[0]; - ($yb)=( &Date_Split($dateb) )[0]; + ($y0)=( &Date_Split($date0, 1) )[0]; + ($y1)=( &Date_Split($date1, 1) )[0]; + ($yb)=( &Date_Split($dateb, 1) )[0]; @date=(); for ($yy=$y0; $yy<=$y1; $yy++) { if (($yy-$yb)%$n == 0) { @@ -2449,9 +2505,9 @@ @d=&ReturnList($d); } - ($y0)=( &Date_Split($date0) )[0]; - ($y1)=( &Date_Split($date1) )[0]; - ($yb)=( &Date_Split($dateb) )[0]; + ($y0)=( &Date_Split($date0, 1) )[0]; + ($y1)=( &Date_Split($date1, 1) )[0]; + ($yb)=( &Date_Split($dateb, 1) )[0]; @y=(); for ($yy=$y0; $yy<=$y1; $yy++) { if (($yy-$yb)%$n == 0) { @@ -2497,9 +2553,9 @@ } # We need to find years that are a multiple of $n from $y(base) - ($y0)=( &Date_Split($date0) )[0]; - ($y1)=( &Date_Split($date1) )[0]; - ($yb)=( &Date_Split($dateb) )[0]; + ($y0)=( &Date_Split($date0, 1) )[0]; + ($y1)=( &Date_Split($date1, 1) )[0]; + ($yb)=( &Date_Split($dateb, 1) )[0]; @date=(); for ($yy=$y0; $yy<=$y1; $yy++) { if (($yy-$yb)%$n == 0) { @@ -2561,9 +2617,9 @@ @d=sort { $a<=>$b } (@d); # We need to find years that are a multiple of $n from $y(base) - ($y0)=( &Date_Split($date0) )[0]; - ($y1)=( &Date_Split($date1) )[0]; - ($yb)=( &Date_Split($dateb) )[0]; + ($y0)=( &Date_Split($date0, 1) )[0]; + ($y1)=( &Date_Split($date1, 1) )[0]; + ($yb)=( &Date_Split($dateb, 1) )[0]; @date=(); for ($yy=$y0; $yy<=$y1; $yy++) { if (($yy-$yb)%$n == 0) { @@ -2589,7 +2645,7 @@ } # Find out what DofW the basedate is. - @tmp2=&Date_Split($dateb); + @tmp2=&Date_Split($dateb, 1); $tmp=&Date_DayOfWeek($tmp2[1],$tmp2[2],$tmp2[0]); @date=(); @@ -2627,7 +2683,7 @@ @tmp2=&Date_Recur($date0,$date1,$dateb,$delta); @date=(); foreach $date (@tmp2) { - ($y,$m)=( &Date_Split($date) )[0..1]; + ($y,$m)=( &Date_Split($date, 1) )[0..1]; $tmp2=&Date_DaysInMonth($m,$y); foreach $d (@d) { $d2=$d; @@ -2754,7 +2810,7 @@ if ($f eq "EASTER") { @tmp=(); foreach $date (@date) { - ($y,$m,$d,$h,$mn,$s)=&Date_Split($date); + ($y,$m,$d,$h,$mn,$s)=&Date_Split($date, 1); ($m,$d)=&Date_Easter($y); $date=&Date_Join($y,$m,$d,$h,$mn,$s); next if (&Date_Cmp($date,$date0)<0 || @@ -2784,7 +2840,7 @@ return "" if (! $date); } $curr=$date; - ($y,$m,$d)=( &Date_Split($date) )[0..2]; + ($y,$m,$d)=( &Date_Split($date, 1) )[0..2]; if ($dow) { $curr_dow=&Date_DayOfWeek($m,$d,$y); @@ -2808,7 +2864,7 @@ if ($adjust && &Date_Cmp($date,$curr)>0); } else { - ($h,$mn,$s)=( &Date_Split($date) )[3..5]; + ($h,$mn,$s)=( &Date_Split($date, 1) )[3..5]; ($th,$tm,$ts)=&Date_ParseTime($hr,$min,$sec); if ($hr) { ($hr,$min,$sec)=($th,$tm,$ts); @@ -2849,7 +2905,7 @@ return "" if (! $date); } $curr=$date; - ($y,$m,$d)=( &Date_Split($date) )[0..2]; + ($y,$m,$d)=( &Date_Split($date, 1) )[0..2]; if ($dow) { $curr_dow=&Date_DayOfWeek($m,$d,$y); @@ -2873,7 +2929,7 @@ if ($adjust && &Date_Cmp($date,$curr)<0); } else { - ($h,$mn,$s)=( &Date_Split($date) )[3..5]; + ($h,$mn,$s)=( &Date_Split($date, 1) )[3..5]; ($th,$tm,$ts)=&Date_ParseTime($hr,$min,$sec); if ($hr) { ($hr,$min,$sec)=($th,$tm,$ts); @@ -2907,7 +2963,7 @@ $date=&ParseDateString($date); return undef if (! $date); $date=&Date_SetTime($date,0,0,0); - my($y)=(&Date_Split($date))[0]; + my($y)=(&Date_Split($date, 1))[0]; &Date_UpdateHolidays($y) if (! exists $Holiday{"dates"}{$y}); return undef if (! exists $Holiday{"dates"}{$y}{$date}); my($name)=$Holiday{"dates"}{$y}{$date}; @@ -2941,7 +2997,7 @@ $date0=&Date_SetTime($date0,"00:00:00"); $date1=&DateCalc_DateDelta($date0,"+0:0:0:1:0:0:0"); } - + $tmp=&Events_Calc($date0,$date1); $flag=$args[2]; @@ -2965,7 +3021,7 @@ } } return \%ret; - + } elsif ($flag==2) { while ($#tmp>0) { ($date0,$tmp)=splice(@tmp,0,2); @@ -3001,7 +3057,7 @@ return "" if (! $date); } - ($y,$m,$d)=( &Date_Split($date) )[0..2]; + ($y,$m,$d)=( &Date_Split($date, 1) )[0..2]; ($h,$mn,$s)=&Date_ParseTime($h,$mn,$s); my($ampm,$wk); @@ -3020,7 +3076,7 @@ if (! $y) { $date=&ParseDateString($date); return "" if (! $date); - ($y,$m,$d,$h,$mn,$s)=&Date_Split($date); + ($y,$m,$d,$h,$mn,$s)=&Date_Split($date, 1); } if (lc($field) eq "y") { @@ -3207,6 +3263,10 @@ sub Date_ConvTZ { print "DEBUG: Date_ConvTZ\n" if ($Curr{"Debug"} =~ /trace/); my($date,$from,$to)=@_; + if (not Date_Split($date)) { + croak "date passed in ('$date') is not a Date::Manip object"; + } + &Date_Init() if (! $Curr{"InitDone"}); my($gmt)=(); @@ -3248,7 +3308,7 @@ my($s1,$h1,$m1,$s2,$h2,$m2,$d,$h,$m,$sign,$delta,$err,$yr,$mon,$sec)=(); # We're going to try to do the calculation without calling DateCalc. - ($yr,$mon,$d,$h,$m,$sec)=&Date_Split($date); + ($yr,$mon,$d,$h,$m,$sec)=&Date_Split($date, 1); # Convert $date from $from to GMT $from=~/([+-])(\d{2})(\d{2})/; @@ -3306,7 +3366,15 @@ # Get timezones from all of the relevant places push(@tz,$Cnf{"TZ"}) if (defined $Cnf{"TZ"}); # TZ config var - push(@tz,$ENV{"TZ"}) if (exists $ENV{"TZ"}); # TZ environ var + push(@tz,$ENV{"TZ"}) if (defined $ENV{"TZ"}); # TZ environ var + push(@tz,$ENV{'SYS$TIMEZONE_RULE'}) + if defined $ENV{'SYS$TIMEZONE_RULE'}; # VMS TZ environ var + push(@tz,$ENV{'SYS$TIMEZONE_NAME'}) + if defined $ENV{'SYS$TIMEZONE_NAME'}; # VMS TZ name environ var + push(@tz,$ENV{'UCX$TZ'}) + if defined $ENV{'UCX$TZ'}; # VMS TZ environ var + push(@tz,$ENV{'TCPIP$TZ'}) + if defined $ENV{'TCPIP$TZ'}; # VMS TZ environ var # The `date` command... if we're doing taint checking, we need to # always call it with a full path... otherwise, use the user's path. @@ -3319,28 +3387,42 @@ # Thu Aug 31 14:57:46 EDT 2000 unless (($^X =~ /perl\.exe$/i) or - $OS eq "Windows") { + ($OS eq "Windows") or + ($OS eq "Netware") or + ($OS eq "VMS")) { if ($Date::Manip::NoTaint) { + if ($OS eq "VMS") { + $tz=$ENV{'SYS$TIMEZONE_NAME'}; + if (! $tz) { + $tz=$ENV{'MULTINET_TIMEZONE'}; + if (! $tz) { + $tz=$ENV{'SYS$TIMEZONE_DIFFERENTIAL'}/3600.; # e.g. '-4' for EDT + } + } + } else { + $tz=`date +%Z 2> /dev/null`; + chomp($tz); + if (! $tz) { + $tz=`date 2> /dev/null`; + chomp($tz); + $tz=(split(/\s+/,$tz))[4]; + } + } + push(@tz,$tz); + } else { + # We need to satisfy taint checking, but also look in all the + # directories in @DatePath. + # + local $ENV{PATH} = join(':', @Date::Manip::DatePath); + local $ENV{BASH_ENV} = ''; $tz=`date +%Z 2> /dev/null`; chomp($tz); if (! $tz) { - $tz=`date 2> /dev/null`; - chomp($tz); - $tz=(split(/\s+/,$tz))[4]; + $tz=`date 2> /dev/null`; + chomp($tz); + $tz=(split(/\s+/,$tz))[4]; } push(@tz,$tz); - } else { - foreach my $dir (@Date::Manip::DatePath) { - next if (! -x "$dir/date"); - $tz=`$dir/date +%Z 2> /dev/null`; - chomp($tz); - if (! $tz) { - $tz=`$dir/date 2> /dev/null`; - chomp($tz); - $tz=(split(/\s+/,$tz))[4]; - } - push(@tz,$tz); - } } } @@ -3366,7 +3448,7 @@ $tmp=<$in>; next if ($tmp =~ /^\s*\043/); chomp($tmp); - if ($tz =~ /^\s*(.*?)\s*$/) { + if ($tmp =~ /^\s*(.*?)\s*$/) { push(@tz,$1); last; } @@ -3376,8 +3458,20 @@ # Now parse each one to find the first valid one. foreach $tz (@tz) { + $tz =~ s/\s*$//; + $tz =~ s/^\s*//; + next if (! $tz); + return uc($tz) - if (defined $Zone{"n2o"}{lc($tz)} or $tz=~/^[+-]\d{4}/); + if (defined $Zone{"n2o"}{lc($tz)}); + + if ($tz =~ /^[+-]\d{4}$/) { + return $tz; + } elsif ($tz =~ /^([+-]\d{2})(?::(\d{2}))?$/) { + my($h,$m)=($1,$2); + $m="00" if (! $m); + return "$h$m"; + } # Handle US/Eastern format if ($tz =~ /^$Zone{"tzones"}$/i) { @@ -3414,7 +3508,7 @@ $d=&Date_SetTime($date,$Cnf{"WorkDayBeg"}) if (! $time); my($y,$mon,$day,$tmp,$h,$m,$dow)=(); - ($y,$mon,$day,$h,$m,$tmp)=&Date_Split($d); + ($y,$mon,$day,$h,$m,$tmp)=&Date_Split($d, 1); $dow=&Date_DayOfWeek($mon,$day,$y); return 0 if ($dow<$Cnf{"WorkWeekBeg"} or @@ -4075,6 +4169,9 @@ # No check as to validity is made. sub Date_Join { print "DEBUG: Date_Join\n" if ($Curr{"Debug"} =~ /trace/); + foreach (0 .. $#_) { + croak "undefined arg $_ to Date_Join()" if not defined $_[$_]; + } my($y,$m,$d,$h,$mn,$s)=@_; my($ym,$md,$dh,$hmn,$mns)=(); @@ -4158,9 +4255,15 @@ # This checks a date. If it is valid, it splits it and returns the elements. # If no date is passed in, it returns a regular expression for the date. +# +# The optional second argument says 'I really expect this to be a +# valid Date::Manip object, please throw an exception if it is +# not'. Otherwise, errors are signalled by returning (). +# sub Date_Split { print "DEBUG: Date_Split\n" if ($Curr{"Debug"} =~ /trace/); - my($date)=@_; + my($date, $definitely_valid)=@_; + $definitely_valid = 0 if not defined $definitely_valid; my($ym,$md,$dh,$hmn,$mns)=(); my($y)='(\d{4})'; my($m)='(0[1-9]|1[0-2])'; @@ -4186,15 +4289,35 @@ } my($t)="^$y$ym$m$md$d$dh$h$hmn$mn$mns$s\$"; - return $t if ($date eq ""); + + if (not defined $date or $date eq '') { + if ($definitely_valid) { + die "bad date '$date'"; + } else { + return $t; + } + } if ($date =~ /$t/) { ($y,$m,$d,$h,$mn,$s)=($1,$2,$3,$4,$5,$6); my(@d_in_m)=(0,31,28,31,30,31,30,31,31,30,31,30,31); $d_in_m[2]=29 if (&Date_LeapYear($y)); - return () if ($d>$d_in_m[$m]); + if ($d>$d_in_m[$m]) { + my $msg = "invalid date $date: day $d of month $m, but only $d_in_m[$m] days in that month"; + if ($definitely_valid) { + die $msg; + } + else { + warn $msg; + return (); + } + } return ($y,$m,$d,$h,$mn,$s); } + + if ($definitely_valid) { + die "invalid date $date: doesn't match regexp $t"; + } return (); } @@ -4460,8 +4583,8 @@ # Exact mode if ($mode==0) { - my($y1,$m1,$d1,$h1,$mn1,$s1)=&Date_Split($D1); - my($y2,$m2,$d2,$h2,$mn2,$s2)=&Date_Split($D2); + my($y1,$m1,$d1,$h1,$mn1,$s1)=&Date_Split($D1, 1); + my($y2,$m2,$d2,$h2,$mn2,$s2)=&Date_Split($D2, 1); my($i,adelta,$d,$delta,$y)=(); # form the delta for hour/min/sec @@ -4523,8 +4646,8 @@ return "+0:0:0:0:0:0:0"; } - my($y1,$m1,$d1,$h1,$mn1,$s1)=&Date_Split($date1); - my($y2,$m2,$d2,$h2,$mn2,$s2)=&Date_Split($date2); + my($y1,$m1,$d1,$h1,$mn1,$s1)=&Date_Split($date1, 1); + my($y2,$m2,$d2,$h2,$mn2,$s2)=&Date_Split($date2, 1); my($dy,$dm,$dw,$dd,$dh,$dmn,$ds,$ddd)=(0,0,0,0,0,0,0,0); if ($mode != 3) { @@ -4580,7 +4703,7 @@ } } else { - ($y1,$m1,$d1)=( &Date_Split($date1) )[0..2]; + ($y1,$m1,$d1)=( &Date_Split($date1, 1) )[0..2]; $dd=0; # If we're jumping across months, set $d1 to the first of the next month # (or possibly the 0th of next month which is equivalent to the last day @@ -4613,7 +4736,7 @@ # in business mode, make sure h1 comes before h2 (if not find delta between # now and end of day and move to start of next business day) - $d1=( &Date_Split($date1) )[2]; + $d1=( &Date_Split($date1, 1) )[2]; $dh=$dmn=$ds=0; if ($mode==2 || $mode==3 and $d1 != $d2) { $tmp=&Date_SetTime($date1,$Cnf{"WorkDayEnd"}); @@ -4623,7 +4746,7 @@ ($tmp,$tmp,$tmp,$tmp,$dh,$dmn,$ds)=&Delta_Split($tmp); $date1=&Date_NextWorkDay($date1,1,0); $date1=&Date_SetTime($date1,$Cnf{"WorkDayBeg"}); - $d1=( &Date_Split($date1) )[2]; + $d1=( &Date_Split($date1, 1) )[2]; confess "ERROR: DateCalc DateDate Business.\n" if ($d1 != $d2); } @@ -4678,11 +4801,14 @@ } # Date, delta - my($y,$m,$d,$h,$mn,$s)=&Date_Split($D1); + my($y,$m,$d,$h,$mn,$s)=&Date_Split($D1, 1); my($dy,$dm,$dw,$dd,$dh,$dmn,$ds)=&Delta_Split($D2); # do the month/year part $y+=$dy; + while (length($y)<4) { + $y = "0$y"; + } &ModuloAddition(-12,$dm,\$m,\$y); # -12 means 1-12 instead of 0-11 $d_in_m[2]=29 if (&Date_LeapYear($y)); @@ -4698,7 +4824,7 @@ } else { $date=&DateCalc_DateDelta(&Date_Join($y,$m,$d,$h,$mn,$s), "+0:0:$dw:0:0:0:0",0); - ($y,$m,$d,$h,$mn,$s)=&Date_Split($date); + ($y,$m,$d,$h,$mn,$s)=&Date_Split($date, 1); } # in business mode, set the day to a work day at this point so the h/mn/s @@ -4706,7 +4832,7 @@ if ($mode==2 || $mode==3) { $d=$d_in_m[$m] if ($d>$d_in_m[$m]); $date=&Date_NextWorkDay(&Date_Join($y,$m,$d,$h,$mn,$s),0,1); - ($y,$m,$d,$h,$mn,$s)=&Date_Split($date); + ($y,$m,$d,$h,$mn,$s)=&Date_Split($date, 1); } # seconds, minutes, hours @@ -4724,7 +4850,7 @@ $dd++; } elsif ($h<$h1 or $h==$h1 && $mn<$m1) { - $dh=$h1-$h; + $dh=$h-$h1; $dmn=$m1-$mn; $h=$h2; $mn=$m2; @@ -4759,7 +4885,7 @@ } else { $date=&Date_PrevWorkDay(&Date_Join($y,$m,$d,$h,$mn,$s),-$dd,1); } - ($y,$m,$d,$h,$mn,$s)=&Date_Split($date); + ($y,$m,$d,$h,$mn,$s)=&Date_Split($date, 1); } else { $d_in_m[2]=29 if (&Date_LeapYear($y)); @@ -5345,7 +5471,7 @@ $date=&Date_GetNext($date,$dow,1) if ($dow ne ""); if ($flag) { - ($tmp)=&Date_Split($date); + ($tmp)=&Date_Split($date, 1); $n++ if ($tmp != $y); } @@ -5354,7 +5480,7 @@ } elsif ($n==0) { $date=&DateCalc_DateDelta($date,"-0:0:1:0:0:0:0",\$err,0); } - ($y,$m,$d)=&Date_Split($date); + ($y,$m,$d)=&Date_Split($date, 1); ($y,$m,$d); } @@ -5375,16 +5501,17 @@ # U` 00d9 u` 00f9 # W` 1e80 w` 1e81 # Y` 1ef2 y` 1ef3 - $$hash{"A`"} = "\xc0"; # À - $$hash{"E`"} = "\xc8"; # È - $$hash{"I`"} = "\xcc"; # Ì - $$hash{"O`"} = "\xd2"; # Ò - $$hash{"U`"} = "\xd9"; # Ù - $$hash{"a`"} = "\xe0"; # à - $$hash{"e`"} = "\xe8"; # è - $$hash{"i`"} = "\xec"; # ì - $$hash{"o`"} = "\xf2"; # ò - $$hash{"u`"} = "\xf9"; # ù + + $$hash{"A`"} = "\xc0"; # LATIN CAPITAL LETTER A WITH GRAVE + $$hash{"E`"} = "\xc8"; # LATIN CAPITAL LETTER E WITH GRAVE + $$hash{"I`"} = "\xcc"; # LATIN CAPITAL LETTER I WITH GRAVE + $$hash{"O`"} = "\xd2"; # LATIN CAPITAL LETTER O WITH GRAVE + $$hash{"U`"} = "\xd9"; # LATIN CAPITAL LETTER U WITH GRAVE + $$hash{"a`"} = "\xe0"; # LATIN SMALL LETTER A WITH GRAVE + $$hash{"e`"} = "\xe8"; # LATIN SMALL LETTER E WITH GRAVE + $$hash{"i`"} = "\xec"; # LATIN SMALL LETTER I WITH GRAVE + $$hash{"o`"} = "\xf2"; # LATIN SMALL LETTER O WITH GRAVE + $$hash{"u`"} = "\xf9"; # LATIN SMALL LETTER U WITH GRAVE # acute ' # A' 00c1 a' 00e1 @@ -5401,18 +5528,18 @@ # Y' 00dd y' 00fd # Z' 0179 z' 017a - $$hash{"A'"} = "\xc1"; # Á - $$hash{"E'"} = "\xc9"; # É - $$hash{"I'"} = "\xcd"; # Í - $$hash{"O'"} = "\xd3"; # Ó - $$hash{"U'"} = "\xda"; # Ú - $$hash{"Y'"} = "\xdd"; # Ý - $$hash{"a'"} = "\xe1"; # á - $$hash{"e'"} = "\xe9"; # é - $$hash{"i'"} = "\xed"; # í - $$hash{"o'"} = "\xf3"; # ó - $$hash{"u'"} = "\xfa"; # ú - $$hash{"y'"} = "\xfd"; # ý + $$hash{"A'"} = "\xc1"; # LATIN CAPITAL LETTER A WITH ACUTE + $$hash{"E'"} = "\xc9"; # LATIN CAPITAL LETTER E WITH ACUTE + $$hash{"I'"} = "\xcd"; # LATIN CAPITAL LETTER I WITH ACUTE + $$hash{"O'"} = "\xd3"; # LATIN CAPITAL LETTER O WITH ACUTE + $$hash{"U'"} = "\xda"; # LATIN CAPITAL LETTER U WITH ACUTE + $$hash{"Y'"} = "\xdd"; # LATIN CAPITAL LETTER Y WITH ACUTE + $$hash{"a'"} = "\xe1"; # LATIN SMALL LETTER A WITH ACUTE + $$hash{"e'"} = "\xe9"; # LATIN SMALL LETTER E WITH ACUTE + $$hash{"i'"} = "\xed"; # LATIN SMALL LETTER I WITH ACUTE + $$hash{"o'"} = "\xf3"; # LATIN SMALL LETTER O WITH ACUTE + $$hash{"u'"} = "\xfa"; # LATIN SMALL LETTER U WITH ACUTE + $$hash{"y'"} = "\xfd"; # LATIN SMALL LETTER Y WITH ACUTE # double acute " " # O" 0150 o" 0151 @@ -5432,16 +5559,16 @@ # W^ 0174 w^ 0175 # Y^ 0176 y^ 0177 - $$hash{"A^"} = "\xc2"; #  - $$hash{"E^"} = "\xca"; # Ê - $$hash{"I^"} = "\xce"; # Î - $$hash{"O^"} = "\xd4"; # Ô - $$hash{"U^"} = "\xdb"; # Û - $$hash{"a^"} = "\xe2"; # â - $$hash{"e^"} = "\xea"; # ê - $$hash{"i^"} = "\xee"; # î - $$hash{"o^"} = "\xf4"; # ô - $$hash{"u^"} = "\xfb"; # û + $$hash{"A^"} = "\xc2"; # LATIN CAPITAL LETTER A WITH CIRCUMFLEX + $$hash{"E^"} = "\xca"; # LATIN CAPITAL LETTER E WITH CIRCUMFLEX + $$hash{"I^"} = "\xce"; # LATIN CAPITAL LETTER I WITH CIRCUMFLEX + $$hash{"O^"} = "\xd4"; # LATIN CAPITAL LETTER O WITH CIRCUMFLEX + $$hash{"U^"} = "\xdb"; # LATIN CAPITAL LETTER U WITH CIRCUMFLEX + $$hash{"a^"} = "\xe2"; # LATIN SMALL LETTER A WITH CIRCUMFLEX + $$hash{"e^"} = "\xea"; # LATIN SMALL LETTER E WITH CIRCUMFLEX + $$hash{"i^"} = "\xee"; # LATIN SMALL LETTER I WITH CIRCUMFLEX + $$hash{"o^"} = "\xf4"; # LATIN SMALL LETTER O WITH CIRCUMFLEX + $$hash{"u^"} = "\xfb"; # LATIN SMALL LETTER U WITH CIRCUMFLEX # tilde ~ # A~ 00c3 a~ 00e3 @@ -5450,12 +5577,12 @@ # O~ 00d5 o~ 00f5 # U~ 0168 u~ 0169 - $$hash{"A~"} = "\xc3"; # à - $$hash{"N~"} = "\xd1"; # Ñ - $$hash{"O~"} = "\xd5"; # Õ - $$hash{"a~"} = "\xe3"; # ã - $$hash{"n~"} = "\xf1"; # ñ - $$hash{"o~"} = "\xf5"; # õ + $$hash{"A~"} = "\xc3"; # LATIN CAPITAL LETTER A WITH TILDE + $$hash{"N~"} = "\xd1"; # LATIN CAPITAL LETTER N WITH TILDE + $$hash{"O~"} = "\xd5"; # LATIN CAPITAL LETTER O WITH TILDE + $$hash{"a~"} = "\xe3"; # LATIN SMALL LETTER A WITH TILDE + $$hash{"n~"} = "\xf1"; # LATIN SMALL LETTER N WITH TILDE + $$hash{"o~"} = "\xf5"; # LATIN SMALL LETTER O WITH TILDE # macron - # A- 0100 a- 0101 @@ -5485,17 +5612,17 @@ # W: 1e84 w: 1e85 # Y: 0178 y: 00ff - $$hash{"A:"} = "\xc4"; # Ä - $$hash{"E:"} = "\xcb"; # Ë - $$hash{"I:"} = "\xcf"; # Ï - $$hash{"O:"} = "\xd6"; # Ö - $$hash{"U:"} = "\xdc"; # Ü - $$hash{"a:"} = "\xe4"; # ä - $$hash{"e:"} = "\xeb"; # ë - $$hash{"i:"} = "\xef"; # ï - $$hash{"o:"} = "\xf6"; # ö - $$hash{"u:"} = "\xfc"; # ü - $$hash{"y:"} = "\xff"; # ~ + $$hash{"A:"} = "\xc4"; # LATIN CAPITAL LETTER A WITH DIAERESIS + $$hash{"E:"} = "\xcb"; # LATIN CAPITAL LETTER E WITH DIAERESIS + $$hash{"I:"} = "\xcf"; # LATIN CAPITAL LETTER I WITH DIAERESIS + $$hash{"O:"} = "\xd6"; # LATIN CAPITAL LETTER O WITH DIAERESIS + $$hash{"U:"} = "\xdc"; # LATIN CAPITAL LETTER U WITH DIAERESIS + $$hash{"a:"} = "\xe4"; # LATIN SMALL LETTER A WITH DIAERESIS + $$hash{"e:"} = "\xeb"; # LATIN SMALL LETTER E WITH DIAERESIS + $$hash{"i:"} = "\xef"; # LATIN SMALL LETTER I WITH DIAERESIS + $$hash{"o:"} = "\xf6"; # LATIN SMALL LETTER O WITH DIAERESIS + $$hash{"u:"} = "\xfc"; # LATIN SMALL LETTER U WITH DIAERESIS + $$hash{"y:"} = "\xff"; # LATIN SMALL LETTER Y WITH DIAERESIS # ring o # U0 016e u0 016f @@ -5510,8 +5637,8 @@ # ,S 015e ,s 015f # ,T 0162 ,t 0163 - $$hash{",C"} = "\xc7"; # Ç - $$hash{",c"} = "\xe7"; # ç + $$hash{",C"} = "\xc7"; # LATIN CAPITAL LETTER C WITH CEDILLA + $$hash{",c"} = "\xe7"; # LATIN SMALL LETTER C WITH CEDILLA # ogonek ; [squiggle down and right below the letter] # A; 0104 a; 0105 @@ -5534,61 +5661,60 @@ # Other characters - # First character is below, 2nd character is above - $$hash{"||"} = "\xa6"; # ¦ - $$hash{" :"} = "\xa8"; # ¨ - $$hash{"-a"} = "\xaa"; # ª - #$$hash{" -"}= "\xaf"; # ¯ (narrow bar) - $$hash{" -"} = "\xad"; # ­ (wide bar) - $$hash{" o"} = "\xb0"; # ° - $$hash{"-+"} = "\xb1"; # ± - $$hash{" 1"} = "\xb9"; # ¹ - $$hash{" 2"} = "\xb2"; # ² - $$hash{" 3"} = "\xb3"; # ³ - $$hash{" '"} = "\xb4"; # ´ - $$hash{"-o"} = "\xba"; # º - $$hash{" ."} = "\xb7"; # · - $$hash{", "} = "\xb8"; # ¸ - $$hash{"Ao"} = "\xc5"; # Å - $$hash{"ao"} = "\xe5"; # å - $$hash{"ox"} = "\xf0"; # ð + $$hash{"||"} = "\xa6"; # BROKEN BAR + $$hash{" :"} = "\xa8"; # DIAERESIS + $$hash{"-a"} = "\xaa"; # FEMININE ORDINAL INDICATOR + #$$hash{" -"}= "\xaf"; # MACRON (narrow bar) + $$hash{" -"} = "\xad"; # HYPHEN (wide bar) + $$hash{" o"} = "\xb0"; # DEGREE SIGN + $$hash{"-+"} = "\xb1"; # PLUS\342\200\220MINUS SIGN + $$hash{" 1"} = "\xb9"; # SUPERSCRIPT ONE + $$hash{" 2"} = "\xb2"; # SUPERSCRIPT TWO + $$hash{" 3"} = "\xb3"; # SUPERSCRIPT THREE + $$hash{" '"} = "\xb4"; # ACUTE ACCENT + $$hash{"-o"} = "\xba"; # MASCULINE ORDINAL INDICATOR + $$hash{" ."} = "\xb7"; # MIDDLE DOT + $$hash{", "} = "\xb8"; # CEDILLA + $$hash{"Ao"} = "\xc5"; # LATIN CAPITAL LETTER A WITH RING ABOVE + $$hash{"ao"} = "\xe5"; # LATIN SMALL LETTER A WITH RING ABOVE + $$hash{"ox"} = "\xf0"; # LATIN SMALL LETTER ETH # upside down characters - $$hash{"ud!"} = "\xa1"; # ¡ - $$hash{"ud?"} = "\xbf"; # ¿ + $$hash{"ud!"} = "\xa1"; # INVERTED EXCLAMATION MARK + $$hash{"ud?"} = "\xbf"; # INVERTED QUESTION MARK # overlay characters - $$hash{"X o"} = "\xa4"; # ¤ - $$hash{"Y ="} = "\xa5"; # ¥ - $$hash{"S o"} = "\xa7"; # § - $$hash{"O c"} = "\xa9"; # © Copyright - $$hash{"O R"} = "\xae"; # ® - $$hash{"D -"} = "\xd0"; # Ð - $$hash{"O /"} = "\xd8"; # Ø - $$hash{"o /"} = "\xf8"; # ø + $$hash{"X o"} = "\xa4"; # CURRENCY SIGN + $$hash{"Y ="} = "\xa5"; # YEN SIGN + $$hash{"S o"} = "\xa7"; # SECTION SIGN + $$hash{"O c"} = "\xa9"; # COPYRIGHT SIGN Copyright + $$hash{"O R"} = "\xae"; # REGISTERED SIGN + $$hash{"D -"} = "\xd0"; # LATIN CAPITAL LETTER ETH + $$hash{"O /"} = "\xd8"; # LATIN CAPITAL LETTER O WITH STROKE + $$hash{"o /"} = "\xf8"; # LATIN SMALL LETTER O WITH STROKE # special names - $$hash{"1/4"} = "\xbc"; # ¼ - $$hash{"1/2"} = "\xbd"; # ½ - $$hash{"3/4"} = "\xbe"; # ¾ - $$hash{"<<"} = "\xab"; # « - $$hash{">>"} = "\xbb"; # » - $$hash{"cent"}= "\xa2"; # ¢ - $$hash{"lb"} = "\xa3"; # £ - $$hash{"mu"} = "\xb5"; # µ - $$hash{"beta"}= "\xdf"; # ß - $$hash{"para"}= "\xb6"; # ¶ - $$hash{"-|"} = "\xac"; # ¬ - $$hash{"AE"} = "\xc6"; # Æ - $$hash{"ae"} = "\xe6"; # æ - $$hash{"x"} = "\xd7"; # × - $$hash{"P"} = "\xde"; # Þ - $$hash{"/"} = "\xf7"; # ÷ - $$hash{"p"} = "\xfe"; # ~ + $$hash{"1/4"} = "\xbc"; # VULGAR FRACTION ONE QUARTER + $$hash{"1/2"} = "\xbd"; # VULGAR FRACTION ONE HALF + $$hash{"3/4"} = "\xbe"; # VULGAR FRACTION THREE QUARTERS + $$hash{"<<"} = "\xab"; # LEFT POINTING DOUBLE ANGLE QUOTATION MARK + $$hash{">>"} = "\xbb"; # RIGHT POINTING DOUBLE ANGLE QUOTATION MARK + $$hash{"cent"}= "\xa2"; # CENT SIGN + $$hash{"lb"} = "\xa3"; # POUND SIGN + $$hash{"mu"} = "\xb5"; # MICRO SIGN + $$hash{"beta"}= "\xdf"; # LATIN SMALL LETTER SHARP S + $$hash{"para"}= "\xb6"; # PILCROW SIGN + $$hash{"-|"} = "\xac"; # NOT SIGN + $$hash{"AE"} = "\xc6"; # LATIN CAPITAL LETTER AE + $$hash{"ae"} = "\xe6"; # LATIN SMALL LETTER AE + $$hash{"x"} = "\xd7"; # MULTIPLICATION SIGN + $$hash{"P"} = "\xde"; # LATIN CAPITAL LETTER THORN + $$hash{"/"} = "\xf7"; # DIVISION SIGN + $$hash{"p"} = "\xfe"; # LATIN SMALL LETTER THORN } # $hashref = &Date_Init_LANGUAGE; @@ -5689,7 +5815,8 @@ $$d{"day_name"}= [["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"]]; $$d{"day_abb"}= - [["Mon","Tue","Wed","Thu","Fri","Sat","Sun"]]; + [["Mon","Tue","Wed","Thu","Fri","Sat","Sun"], + ["", "Tues","", "Thur","", "", ""]]; $$d{"day_char"}= [["M","T","W","Th","F","Sa","S"]]; @@ -5745,6 +5872,9 @@ sub Date_Init_Italian { print "DEBUG: Date_Init_Italian\n" if ($Curr{"Debug"} =~ /trace/); my($d)=@_; + my(%h)=(); + &Char_8Bit(\%h); + my($i)=$h{"i'"}; $$d{"month_name"}= [[qw(Gennaio Febbraio Marzo Aprile Maggio Giugno @@ -5755,7 +5885,7 @@ $$d{"day_name"}= [[qw(Lunedi Martedi Mercoledi Giovedi Venerdi Sabato Domenica)], - [qw(Lunedí Martedí Mercoledí Giovedí Venerdí)]]; + [qw(Luned${i} Marted${i} Mercoled${i} Gioved${i} Venerd${i})]]; $$d{"day_abb"}= [[qw(Lun Mar Mer Gio Ven Sab Dom)]]; $$d{"day_char"}= @@ -5821,13 +5951,13 @@ $$d{"month_name"}= [["janvier","fevrier","mars","avril","mai","juin", "juillet","aout","septembre","octobre","novembre","decembre"], - ["janvier","f$e"."vrier","mars","avril","mai","juin", - "juillet","ao$u"."t","septembre","octobre","novembre","d$e"."cembre"]]; + ["janvier","f${e}vrier","mars","avril","mai","juin", + "juillet","ao${u}t","septembre","octobre","novembre","d${e}cembre"]]; $$d{"month_abb"}= [["jan","fev","mar","avr","mai","juin", "juil","aout","sept","oct","nov","dec"], - ["jan","f$e"."v","mar","avr","mai","juin", - "juil","ao$u"."t","sept","oct","nov","d$e"."c"]]; + ["jan","f${e}v","mar","avr","mai","juin", + "juil","ao${u}t","sept","oct","nov","d${e}c"]]; $$d{"day_name"}= [["lundi","mardi","mercredi","jeudi","vendredi","samedi","dimanche"]]; @@ -5853,12 +5983,12 @@ $$d{"last"} =["dernier"]; $$d{"each"} =["chaque","tous les","toutes les"]; $$d{"of"} =["en","de"]; - $$d{"at"} =["a",$a."0"]; + $$d{"at"} =["a","${a}0"]; $$d{"on"} =["sur"]; $$d{"future"} =["en"]; $$d{"past"} =["il y a"]; $$d{"next"} =["suivant"]; - $$d{"prev"} =["precedent","pr$e"."c$e"."dent"]; + $$d{"prev"} =["precedent","pr${e}c${e}dent"]; $$d{"later"} =["plus tard"]; $$d{"exact"} =["exactement"]; @@ -5868,7 +5998,7 @@ $$d{"offset"} =["hier","-0:0:0:1:0:0:0","demain","+0:0:0:1:0:0:0"]; $$d{"times"} =["midi","12:00:00","minuit","00:00:00"]; - $$d{"years"} =["an","annee","ans","annees","ann$e"."e","ann$e"."es"]; + $$d{"years"} =["an","annee","ans","annees","ann${e}e","ann${e}es"]; $$d{"months"} =["mois"]; $$d{"weeks"} =["sem","semaine"]; $$d{"days"} =["j","jour","jours"]; @@ -5888,6 +6018,12 @@ sub Date_Init_Romanian { print "DEBUG: Date_Init_Romanian\n" if ($Curr{"Debug"} =~ /trace/); my($d)=@_; + my(%h)=(); + &Char_8Bit(\%h); + my($p)=$h{"p"}; + my($i)=$h{"i^"}; + my($a)=$h{"a~"}; + my($o)=$h{"-o"}; $$d{"month_name"}= [["ianuarie","februarie","martie","aprilie","mai","iunie", @@ -5899,11 +6035,11 @@ $$d{"day_name"}= [["luni","marti","miercuri","joi","vineri","simbata","duminica"], - ["luni","marþi","miercuri","joi","vineri","sîmbãtã", - "duminicã"]]; + ["luni","mar${p}i","miercuri","joi","vineri","s${i}mb${a}t${a}", + "duminic${a}"]]; $$d{"day_abb"}= [["lun","mar","mie","joi","vin","sim","dum"], - ["lun","mar","mie","joi","vin","sîm","dum"]]; + ["lun","mar","mie","joi","vin","s${i}m","dum"]]; $$d{"day_char"}= [["L","Ma","Mi","J","V","S","D"]]; @@ -5923,16 +6059,16 @@ "a douazecisipatra","a douazecisicincea","a douazecisisasea", "a douazecisisaptea","a douazecisiopta","a douazecisinoua","a treizecea", "a treizecisiuna"], - ["prima","a doua","a treia","a patra","a cincea","a ºasea", - "a ºaptea","a opta","a noua","a zecea","a unsprezecea", + ["prima","a doua","a treia","a patra","a cincea","a ${o}asea", + "a ${o}aptea","a opta","a noua","a zecea","a unsprezecea", "a doisprezecea","a treisprezecea","a patrusprezecea","a cincisprezecea", - "a ºaiprezecea","a ºaptesprezecea","a optsprezecea", - "a nouãsprezecea","a douãzecea","a douãzeciºiuna", - "a douãzeciºidoua","a douãzeciºitreia", - "a douãzeciºipatra","a douãzeciºicincea", - "a douãzeciºiºasea","a douãzeciºiºaptea", - "a douãzeciºiopta","a douãzeciºinoua","a treizecea", - "a treizeciºiuna"], + "a ${o}aiprezecea","a ${o}aptesprezecea","a optsprezecea", + "a nou${a}sprezecea","a dou${a}zecea","a dou${a}zeci${o}iuna", + "a dou${a}zeci${o}idoua","a dou${a}zeci${o}itreia", + "a dou${a}zeci${o}ipatra","a dou${a}zeci${o}icincea", + "a dou${a}zeci${o}i${o}asea","a dou${a}zeci${o}i${o}aptea", + "a dou${a}zeci${o}iopta","a dou${a}zeci${o}inoua","a treizecea", + "a treizeci${o}iuna"], ["intii", "doi", "trei", "patru", "cinci", "sase", "sapte", "opt","noua","zece","unsprezece","doisprezece", "treisprezece","patrusprezece","cincisprezece","saiprezece", @@ -5940,49 +6076,49 @@ "douazecisiunu","douazecisidoi","douazecisitrei", "douazecisipatru","douazecisicinci","douazecisisase","douazecisisapte", "douazecisiopt","douazecisinoua","treizeci","treizecisiunu"], - ["întîi", "doi", "trei", "patru", "cinci", "ºase", "ºapte", - "opt","nouã","zece","unsprezece","doisprezece", - "treisprezece","patrusprezece","cincisprezece","ºaiprezece", - "ºaptesprezece","optsprezece","nouãsprezece","douãzeci", - "douãzeciºiunu","douãzeciºidoi","douãzeciºitrei", - "douãzecisipatru","douãzeciºicinci","douãzeciºiºase", - "douãzeciºiºapte","douãzeciºiopt", - "douãzeciºinouã","treizeci","treizeciºiunu"]]; + ["${i}nt${i}i", "doi", "trei", "patru", "cinci", "${o}ase", "${o}apte", + "opt","nou${a}","zece","unsprezece","doisprezece", + "treisprezece","patrusprezece","cincisprezece","${o}aiprezece", + "${o}aptesprezece","optsprezece","nou${a}sprezece","dou${a}zeci", + "dou${a}zeci${o}iunu","dou${a}zeci${o}idoi","dou${a}zeci${o}itrei", + "dou${a}zecisipatru","dou${a}zeci${o}icinci","dou${a}zeci${o}i${o}ase", + "dou${a}zeci${o}i${o}apte","dou${a}zeci${o}iopt", + "dou${a}zeci${o}inou${a}","treizeci","treizeci${o}iunu"]]; - $$d{"now"} =["acum","azi","astazi","astãzi"]; + $$d{"now"} =["acum","azi","astazi","ast${a}zi"]; $$d{"last"} =["ultima"]; $$d{"each"} =["fiecare"]; $$d{"of"} =["din","in","n"]; $$d{"at"} =["la"]; $$d{"on"} =["on"]; - $$d{"future"} =["in","în"]; - $$d{"past"} =["in urma", "în urmã"]; - $$d{"next"} =["urmatoarea","urmãtoarea"]; + $$d{"future"} =["in","${i}n"]; + $$d{"past"} =["in urma", "${i}n urm${a}"]; + $$d{"next"} =["urmatoarea","urm${a}toarea"]; $$d{"prev"} =["precedenta","ultima"]; - $$d{"later"} =["mai tirziu", "mai tîrziu"]; + $$d{"later"} =["mai tirziu", "mai t${i}rziu"]; $$d{"exact"} =["exact"]; $$d{"approx"} =["aproximativ"]; - $$d{"business"}=["de lucru","lucratoare","lucrãtoare"]; + $$d{"business"}=["de lucru","lucratoare","lucr${a}toare"]; $$d{"offset"} =["ieri","-0:0:0:1:0:0:0", "alaltaieri", "-0:0:0:2:0:0:0", - "alaltãieri","-0:0:0:2:0:0:0", + "alalt${a}ieri","-0:0:0:2:0:0:0", "miine","+0:0:0:1:0:0:0", - "mîine","+0:0:0:1:0:0:0", + "m${i}ine","+0:0:0:1:0:0:0", "poimiine","+0:0:0:2:0:0:0", - "poimîine","+0:0:0:2:0:0:0"]; + "poim${i}ine","+0:0:0:2:0:0:0"]; $$d{"times"} =["amiaza","12:00:00", - "amiazã","12:00:00", + "amiaz${a}","12:00:00", "miezul noptii","00:00:00", - "miezul nopþii","00:00:00"]; + "miezul nop${p}ii","00:00:00"]; $$d{"years"} =["ani","an","a"]; - $$d{"months"} =["luni","luna","lunã","l"]; - $$d{"weeks"} =["saptamini","sãptãmîni","saptamina", - "sãptãmîna","sapt","sãpt"]; + $$d{"months"} =["luni","luna","lun${a}","l"]; + $$d{"weeks"} =["saptamini","s${a}pt${a}m${i}ni","saptamina", + "s${a}pt${a}m${i}na","sapt","s${a}pt"]; $$d{"days"} =["zile","zi","z"]; - $$d{"hours"} =["ore", "ora", "orã", "h"]; + $$d{"hours"} =["ore", "ora", "or${a}", "h"]; $$d{"minutes"} =["minute","min","m"]; $$d{"seconds"} =["secunde","sec",]; $$d{"replace"} =["s","secunde"]; @@ -5998,6 +6134,11 @@ sub Date_Init_Swedish { print "DEBUG: Date_Init_Swedish\n" if ($Curr{"Debug"} =~ /trace/); my($d)=@_; + my(%h)=(); + &Char_8Bit(\%h); + my($ao)=$h{"ao"}; + my($o) =$h{"o:"}; + my($a) =$h{"a:"}; $$d{"month_name"}= [["Januari","Februari","Mars","April","Maj","Juni", @@ -6008,11 +6149,11 @@ $$d{"day_name"}= [["Mandag","Tisdag","Onsdag","Torsdag","Fredag","Lordag","Sondag"], - ["Måndag","Tisdag","Onsdag","Torsdag","Fredag","Lördag", - "Söndag"]]; + ["M${ao}ndag","Tisdag","Onsdag","Torsdag","Fredag","L${o}rdag", + "S${o}ndag"]]; $$d{"day_abb"}= [["Man","Tis","Ons","Tor","Fre","Lor","Son"], - ["Mån","Tis","Ons","Tor","Fre","Lör","Sön"]]; + ["M${ao}n","Tis","Ons","Tor","Fre","L${o}r","S${o}n"]]; $$d{"day_char"}= [["M","Ti","O","To","F","L","S"]]; @@ -6028,36 +6169,36 @@ "tjugoforsta","tjugoandra","tjugotredje","tjugofjarde","tjugofemte", "tjugosjatte","tjugosjunde","tjugoattonde","tjugonionde", "trettionde","trettioforsta"], - ["första","andra","tredje","fjärde","femte","sjätte","sjunde", - "åttonde","nionde","tionde","elfte","tolfte","trettonde","fjortonde", + ["f${o}rsta","andra","tredje","fj${a}rde","femte","sj${a}tte","sjunde", + "${ao}ttonde","nionde","tionde","elfte","tolfte","trettonde","fjortonde", "femtonde","sextonde","sjuttonde","artonde","nittonde","tjugonde", - "tjugoförsta","tjugoandra","tjugotredje","tjugofjärde","tjugofemte", - "tjugosjätte","tjugosjunde","tjugoåttonde","tjugonionde", - "trettionde","trettioförsta"]]; + "tjugof${o}rsta","tjugoandra","tjugotredje","tjugofj${a}rde","tjugofemte", + "tjugosj${a}tte","tjugosjunde","tjugo${ao}ttonde","tjugonionde", + "trettionde","trettiof${o}rsta"]]; $$d{"now"} =["idag","nu"]; - $$d{"last"} =["forra","förra","senaste"]; + $$d{"last"} =["forra","f${o}rra","senaste"]; $$d{"each"} =["varje"]; $$d{"of"} =["om"]; $$d{"at"} =["kl","kl.","klockan"]; - $$d{"on"} =["pa","på"]; + $$d{"on"} =["pa","p${ao}"]; $$d{"future"} =["om"]; $$d{"past"} =["sedan"]; - $$d{"next"} =["nasta","nästa"]; - $$d{"prev"} =["forra","förra"]; + $$d{"next"} =["nasta","n${a}sta"]; + $$d{"prev"} =["forra","f${o}rra"]; $$d{"later"} =["senare"]; $$d{"exact"} =["exakt"]; - $$d{"approx"} =["ungefar","ungefär"]; + $$d{"approx"} =["ungefar","ungef${a}r"]; $$d{"business"}=["arbetsdag","arbetsdagar"]; - $$d{"offset"} =["igår","-0:0:0:1:0:0:0","igar","-0:0:0:1:0:0:0", + $$d{"offset"} =["ig${ao}r","-0:0:0:1:0:0:0","igar","-0:0:0:1:0:0:0", "imorgon","+0:0:0:1:0:0:0"]; - $$d{"times"} =["mitt pa dagen","12:00:00","mitt på dagen","12:00:00", + $$d{"times"} =["mitt pa dagen","12:00:00","mitt p${ao} dagen","12:00:00", "midnatt","00:00:00"]; - $$d{"years"} =["ar","år"]; - $$d{"months"} =["man","manad","manader","mån","månad","månader"]; + $$d{"years"} =["ar","${ao}r"]; + $$d{"months"} =["man","manad","manader","m${ao}n","m${ao}nad","m${ao}nader"]; $$d{"weeks"} =["v","vecka","veckor"]; $$d{"days"} =["d","dag","dagar"]; $$d{"hours"} =["t","tim","timme","timmar"]; @@ -6086,12 +6227,12 @@ $$d{"month_name"}= [["Januar","Februar","Maerz","April","Mai","Juni", "Juli","August","September","Oktober","November","Dezember"], - ["J$a"."nner","Februar","M$a"."rz","April","Mai","Juni", + ["J${a}nner","Februar","M${a}rz","April","Mai","Juni", "Juli","August","September","Oktober","November","Dezember"]]; $$d{"month_abb"}= [["Jan","Feb","Mar","Apr","Mai","Jun", "Jul","Aug","Sep","Okt","Nov","Dez"], - ["J$a"."n","Feb","M$a"."r","Apr","Mai","Jun", + ["J${a}n","Feb","M${a}r","Apr","Mai","Jun", "Jul","Aug","Sep","Okt","Nov","Dez"]]; $$d{"day_name"}= @@ -6116,13 +6257,13 @@ "vierundzwanzigste","funfundzwanzigste","sechundzwanzigste", "siebundzwanzigste","achtundzwanzigste","neunundzwanzigste", "dreibigste","einunddreibigste"], - ["erste","zweite","dritte","vierte","f$u"."nfte","sechste","siebente", - "achte","neunte","zehnte","elfte","zw$o"."lfte","dreizehnte", - "vierzehnte","f$u"."nfzehnte","sechzehnte","siebzehnte","achtzehnte", + ["erste","zweite","dritte","vierte","f${u}nfte","sechste","siebente", + "achte","neunte","zehnte","elfte","zw${o}lfte","dreizehnte", + "vierzehnte","f${u}nfzehnte","sechzehnte","siebzehnte","achtzehnte", "neunzehnte","zwanzigste","einundzwanzigste","zweiundzwanzigste", - "dreiundzwanzigste","vierundzwanzigste","f$u"."nfundzwanzigste", + "dreiundzwanzigste","vierundzwanzigste","f${u}nfundzwanzigste", "sechundzwanzigste","siebundzwanzigste","achtundzwanzigste", - "neunundzwanzigste","drei$b"."igste","einunddrei$b"."igste"], + "neunundzwanzigste","drei${b}igste","einunddrei${b}igste"], ["erster"]]; $$d{"now"} =["heute","jetzt"]; @@ -6133,12 +6274,12 @@ $$d{"on"} =["am"]; $$d{"future"} =["in"]; $$d{"past"} =["vor"]; - $$d{"next"} =["nachste","n$a"."chste","nachsten","n$a"."chsten"]; + $$d{"next"} =["nachste","n${a}chste","nachsten","n${a}chsten"]; $$d{"prev"} =["vorherigen","vorherige","letzte","letzten"]; - $$d{"later"} =["spater","sp$a"."ter"]; + $$d{"later"} =["spater","sp${a}ter"]; $$d{"exact"} =["genau"]; - $$d{"approx"} =["ungefahr","ungef$a"."hr"]; + $$d{"approx"} =["ungefahr","ungef${a}hr"]; $$d{"business"}=["Arbeitstag"]; $$d{"offset"} =["gestern","-0:0:0:1:0:0:0","morgen","+0:0:0:1:0:0:0"]; @@ -6164,6 +6305,8 @@ sub Date_Init_Dutch { print "DEBUG: Date_Init_Dutch\n" if ($Curr{"Debug"} =~ /trace/); my($d)=@_; + my(%h)=(); + &Char_8Bit(\%h); $$d{"month_name"}= [["januari","februari","maart","april","mei","juni","juli","augustus", @@ -6173,12 +6316,13 @@ $$d{"month_abb"}= [["jan","feb","maa","apr","mei","jun","jul", "aug","sep","oct","nov","dec"], - ["","","","","","","","","","okt"]]; + ["","","mrt","","","","","","","okt"]]; $$d{"day_name"}= [["maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag", "zondag"]]; $$d{"day_abb"}= - [["ma","di","wo","do","vr","zat","zon"]]; + [["ma","di","wo","do","vr","zat","zon"], + ["","","","","","za","zo"]]; $$d{"day_char"}= [["M","D","W","D","V","Za","Zo"]]; @@ -6257,24 +6401,24 @@ [["stycznia","luty","marca","kwietnia","maja","czerwca", "lipca","sierpnia","wrzesnia","pazdziernika","listopada","grudnia"], ["stycznia","luty","marca","kwietnia","maja","czerwca","lipca", - "sierpnia","wrzeœnia","paŸdziernika","listopada","grudnia"]]; + "sierpnia","wrze\x9cnia","pa\x9fdziernika","listopada","grudnia"]]; $$d{"month_abb"}= [["sty.","lut.","mar.","kwi.","maj","cze.", "lip.","sie.","wrz.","paz.","lis.","gru."], ["sty.","lut.","mar.","kwi.","maj","cze.", - "lip.","sie.","wrz.","paŸ.","lis.","gru."]]; + "lip.","sie.","wrz.","pa\x9f.","lis.","gru."]]; $$d{"day_name"}= [["poniedzialek","wtorek","sroda","czwartek","piatek","sobota", "niedziela"], - ["poniedzia³ek","wtorek","œroda","czwartek","pi¹tek", + ["poniedzia\x81\xb3ek","wtorek","\x9croda","czwartek","pi\x81\xb9tek", "sobota","niedziela"]]; $$d{"day_abb"}= [["po.","wt.","sr.","cz.","pi.","so.","ni."], - ["po.","wt.","œr.","cz.","pi.","so.","ni."]]; + ["po.","wt.","\x9cr.","cz.","pi.","so.","ni."]]; $$d{"day_char"}= [["p","w","e","c","p","s","n"], - ["p","w","œ.","c","p","s","n"]]; + ["p","w","\x9c.","c","p","s","n"]]; $$d{"num_suff"}= [["1.","2.","3.","4.","5.","6.","7.","8.","9.","10.", @@ -6292,48 +6436,48 @@ "dwudziestego piatego","dwudziestego szostego", "dwudziestego siodmego","dwudziestego osmego", "dwudziestego dziewiatego","trzydziestego","trzydziestego pierwszego"], - ["pierwszego","drugiego","trzeczego","czwartego","pi¹tego", - "szóstego","siódmego","ósmego","dziewi¹tego", - "dziesi¹tego","jedenastego","dwunastego","trzynastego", - "czternastego","piêtnastego","szestnastego","siedemnastego", + ["pierwszego","drugiego","trzeczego","czwartego","pi\x81\xb9tego", + "sz\x81\xf3stego","si\x81\xf3dmego","\x81\xf3smego","dziewi\x81\xb9tego", + "dziesi\x81\xb9tego","jedenastego","dwunastego","trzynastego", + "czternastego","pi\x81\xeatnastego","szestnastego","siedemnastego", "osiemnastego","dziewietnastego","dwudziestego", "dwudziestego pierwszego","dwudziestego drugiego", "dwudziestego trzeczego","dwudziestego czwartego", - "dwudziestego pi¹tego","dwudziestego szóstego", - "dwudziestego siódmego","dwudziestego ósmego", - "dwudziestego dziewi¹tego","trzydziestego", + "dwudziestego pi\x81\xb9tego","dwudziestego sz\x81\xf3stego", + "dwudziestego si\x81\xf3dmego","dwudziestego \x81\xf3smego", + "dwudziestego dziewi\x81\xb9tego","trzydziestego", "trzydziestego pierwszego"]]; $$d{"now"} =["dzisaj","teraz"]; $$d{"last"} =["ostatni","ostatna"]; - $$d{"each"} =["kazdy","ka¿dy", "kazdym","ka¿dym"]; + $$d{"each"} =["kazdy","ka\x81\xbfdy", "kazdym","ka\x81\xbfdym"]; $$d{"of"} =["w","z"]; $$d{"at"} =["o","u"]; $$d{"on"} =["na"]; $$d{"future"} =["za"]; $$d{"past"} =["temu"]; - $$d{"next"} =["nastepny","nastêpny","nastepnym","nastêpnym", - "przyszly","przysz³y","przyszlym", - "przysz³ym"]; - $$d{"prev"} =["zeszly","zesz³y","zeszlym","zesz³ym"]; + $$d{"next"} =["nastepny","nast\x81\xeapny","nastepnym","nast\x81\xeapnym", + "przyszly","przysz\x81\xb3y","przyszlym", + "przysz\x81\xb3ym"]; + $$d{"prev"} =["zeszly","zesz\x81\xb3y","zeszlym","zesz\x81\xb3ym"]; $$d{"later"} =["later"]; - $$d{"exact"} =["doklandnie","dok³andnie"]; - $$d{"approx"} =["w przyblizeniu","w przybli¿eniu","mniej wiecej", - "mniej wiêcej","okolo","oko³o"]; - $$d{"business"}=["sluzbowy","s³u¿bowy","sluzbowym", - "s³u¿bowym"]; + $$d{"exact"} =["doklandnie","dok\x81\xb3andnie"]; + $$d{"approx"} =["w przyblizeniu","w przybli\x81\xbfeniu","mniej wiecej", + "mniej wi\x81\xeacej","okolo","oko\x81\xb3o"]; + $$d{"business"}=["sluzbowy","s\x81\xb3u\x81\xbfbowy","sluzbowym", + "s\x81\xb3u\x81\xbfbowym"]; - $$d{"times"} =["po³udnie","12:00:00", - "pó³noc","00:00:00", + $$d{"times"} =["po\x81\xb3udnie","12:00:00", + "p\x81\xf3\x81\xb3noc","00:00:00", "poludnie","12:00:00","polnoc","00:00:00"]; $$d{"offset"} =["wczoraj","-0:0:1:0:0:0","jutro","+0:0:1:0:0:0"]; $$d{"years"} =["rok","lat","lata","latach"]; - $$d{"months"} =["m.","miesiac","miesi¹c","miesiecy", - "miesiêcy","miesiacu","miesi¹cu"]; - $$d{"weeks"} =["ty.","tydzien","tydzieñ","tygodniu"]; - $$d{"days"} =["d.","dzien","dzieñ","dni"]; + $$d{"months"} =["m.","miesiac","miesi\x81\xb9c","miesiecy", + "miesi\x81\xeacy","miesiacu","miesi\x81\xb9cu"]; + $$d{"weeks"} =["ty.","tydzien","tydzie\x81\xf1","tygodniu"]; + $$d{"days"} =["d.","dzien","dzie\x81\xf1","dni"]; $$d{"hours"} =["g.","godzina","godziny","godzinie"]; $$d{"minutes"} =["mn.","min.","minut","minuty"]; $$d{"seconds"} =["s.","sekund","sekundy"]; @@ -6350,6 +6494,8 @@ sub Date_Init_Spanish { print "DEBUG: Date_Init_Spanish\n" if ($Curr{"Debug"} =~ /trace/); my($d)=@_; + my(%h)=(); + &Char_8Bit(\%h); $$d{"month_name"}= [["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto", @@ -6391,9 +6537,6 @@ "Vigesimo Septima","Vigesimo Octava","Vigesimo Novena","Trigesima", "Trigesimo Primera"]]; - - - $$d{"now"} =["Hoy","Ahora"]; $$d{"last"} =["ultimo"]; $$d{"each"} =["cada"]; @@ -6433,11 +6576,22 @@ sub Date_Init_Portuguese { print "DEBUG: Date_Init_Portuguese\n" if ($Curr{"Debug"} =~ /trace/); my($d)=@_; + my(%h)=(); + &Char_8Bit(\%h); + my($o) = $h{"-o"}; + my($c) = $h{",c"}; + my($a) = $h{"a'"}; + my($e) = $h{"e'"}; + my($u) = $h{"u'"}; + my($o2)= $h{"o'"}; + my($a2)= $h{"a`"}; + my($a3)= $h{"a~"}; + my($e2)= $h{"e^"}; $$d{"month_name"}= [["Janeiro","Fevereiro","Marco","Abril","Maio","Junho", "Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"], - ["Janeiro","Fevereiro","Março","Abril","Maio","Junho", + ["Janeiro","Fevereiro","Mar${c}o","Abril","Maio","Junho", "Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"]]; $$d{"month_abb"}= @@ -6446,19 +6600,19 @@ $$d{"day_name"}= [["Segunda","Terca","Quarta","Quinta","Sexta","Sabado","Domingo"], - ["Segunda","Terça","Quarta","Quinta","Sexta","Sábado","Domingo"]]; + ["Segunda","Ter${c}a","Quarta","Quinta","Sexta","S${a}bado","Domingo"]]; $$d{"day_abb"}= [["Seg","Ter","Qua","Qui","Sex","Sab","Dom"], - ["Seg","Ter","Qua","Qui","Sex","Sáb","Dom"]]; + ["Seg","Ter","Qua","Qui","Sex","S${a}b","Dom"]]; $$d{"day_char"}= [["Sg","T","Qa","Qi","Sx","Sb","D"]]; $$d{"num_suff"}= - [["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º"]]; + [["1${o}","2${o}","3${o}","4${o}","5${o}","6${o}","7${o}","8${o}", + "9${o}","10${o}","11${o}","12${o}","13${o}","14${o}","15${o}", + "16${o}","17${o}","18${o}","19${o}","20${o}","21${o}","22${o}", + "23${o}","24${o}","25${o}","26${o}","27${o}","28${o}","29${o}", + "30${o}","31${o}"]]; $$d{"num_word"}= [["primeiro","segundo","terceiro","quarto","quinto","sexto","setimo", "oitavo","nono","decimo","decimo primeiro","decimo segundo", @@ -6467,26 +6621,26 @@ "vigesimo primeiro","vigesimo segundo","vigesimo terceiro", "vigesimo quarto","vigesimo quinto","vigesimo sexto","vigesimo setimo", "vigesimo oitavo","vigesimo nono","trigesimo","trigesimo primeiro"], - ["primeiro","segundo","terceiro","quarto","quinto","sexto","sétimo", - "oitavo","nono","décimo","décimo primeiro","décimo segundo", - "décimo terceiro","décimo quarto","décimo quinto", - "décimo sexto","décimo sétimo","décimo oitavo", - "décimo nono","vigésimo","vigésimo primeiro", - "vigésimo segundo","vigésimo terceiro","vigésimo quarto", - "vigésimo quinto","vigésimo sexto","vigésimo sétimo", - "vigésimo oitavo","vigésimo nono","trigésimo", - "trigésimo primeiro"]]; + ["primeiro","segundo","terceiro","quarto","quinto","sexto","s${e}timo", + "oitavo","nono","d${e}cimo","d${e}cimo primeiro","d${e}cimo segundo", + "d${e}cimo terceiro","d${e}cimo quarto","d${e}cimo quinto", + "d${e}cimo sexto","d${e}cimo s${e}timo","d${e}cimo oitavo", + "d${e}cimo nono","vig${e}simo","vig${e}simo primeiro", + "vig${e}simo segundo","vig${e}simo terceiro","vig${e}simo quarto", + "vig${e}simo quinto","vig${e}simo sexto","vig${e}simo s${e}timo", + "vig${e}simo oitavo","vig${e}simo nono","trig${e}simo", + "trig${e}simo primeiro"]]; $$d{"now"} =["agora","hoje"]; - $$d{"last"} =["último","ultimo"]; + $$d{"last"} =["${u}ltimo","ultimo"]; $$d{"each"} =["cada"]; $$d{"of"} =["da","do"]; - $$d{"at"} =["as","às"]; + $$d{"at"} =["as","${a2}s"]; $$d{"on"} =["na","no"]; $$d{"future"} =["em"]; - $$d{"past"} =["a","à"]; - $$d{"next"} =["proxima","proximo","próxima","próximo"]; - $$d{"prev"} =["ultima","ultimo","última","último"]; + $$d{"past"} =["a","${a2}"]; + $$d{"next"} =["proxima","proximo","pr${o2}xima","pr${o2}ximo"]; + $$d{"prev"} =["ultima","ultimo","${u}ltima","${u}ltimo"]; $$d{"later"} =["passadas","passados"]; $$d{"exact"} =["exactamente"]; @@ -6494,11 +6648,11 @@ $$d{"business"}=["util","uteis"]; $$d{"offset"} =["ontem","-0:0:0:1:0:0:0", - "amanha","+0:0:0:1:0:0:0","amanhã","+0:0:0:1:0:0:0"]; + "amanha","+0:0:0:1:0:0:0","amanh${a3}","+0:0:0:1:0:0:0"]; $$d{"times"} =["meio-dia","12:00:00","meia-noite","00:00:00"]; $$d{"years"} =["anos","ano","ans","an","a"]; - $$d{"months"} =["meses","mês","mes","m"]; + $$d{"months"} =["meses","m${e2}s","mes","m"]; $$d{"weeks"} =["semanas","semana","sem","sems","s"]; $$d{"days"} =["dias","dia","d"]; $$d{"hours"} =["horas","hora","hr","hrs"]; @@ -6514,6 +6668,381 @@ $$d{"pm"} = ["PM","P.M."]; } +sub Date_Init_Russian { + print "DEBUG: Date_Init_Russian\n" if ($Curr{"Debug"} =~ /trace/); + my($d)=@_; + my(%h)=(); + &Char_8Bit(\%h); + my($a) =$h{"a:"}; + + $$d{"month_name"}= + [ + ["\xd1\xce\xd7\xc1\xd2\xd1","\xc6\xc5\xd7\xd2\xc1\xcc\xd1", + "\xcd\xc1\xd2\xd4\xc1","\xc1\xd0\xd2\xc5\xcc\xd1","\xcd\xc1\xd1", + "\xc9\xc0\xce\xd1", + "\xc9\xc0\xcc\xd1","\xc1\xd7\xc7\xd5\xd3\xd4\xc1", + "\xd3\xc5\xce\xd4\xd1\xc2\xd2\xd1","\xcf\xcb\xd4\xd1\xc2\xd2\xd1", + "\xce\xcf\xd1\xc2\xd2\xd1","\xc4\xc5\xcb\xc1\xc2\xd2\xd1"], + ["\xd1\xce\xd7\xc1\xd2\xd8","\xc6\xc5\xd7\xd2\xc1\xcc\xd8", + "\xcd\xc1\xd2\xd4","\xc1\xd0\xd2\xc5\xcc\xd8","\xcd\xc1\xca", + "\xc9\xc0\xce\xd8", + "\xc9\xc0\xcc\xd8","\xc1\xd7\xc7\xd5\xd3\xd4", + "\xd3\xc5\xce\xd4\xd1\xc2\xd2\xd8","\xcf\xcb\xd4\xd1\xc2\xd2\xd8", + "\xce\xcf\xd1\xc2\xd2\xd8","\xc4\xc5\xcb\xc1\xc2\xd2\xd8"] + ]; + + $$d{"month_abb"}= + [["\xd1\xce\xd7","\xc6\xc5\xd7","\xcd\xd2\xd4","\xc1\xd0\xd2", + "\xcd\xc1\xca","\xc9\xc0\xce", + "\xc9\xc0\xcc","\xc1\xd7\xc7","\xd3\xce\xd4","\xcf\xcb\xd4", + "\xce\xcf\xd1\xc2","\xc4\xc5\xcb"], + ["","\xc6\xd7\xd2","","","\xcd\xc1\xd1","", + "","","\xd3\xc5\xce","\xcf\xcb\xd4","\xce\xcf\xd1",""]]; + + $$d{"day_name"}= + [["\xd0\xcf\xce\xc5\xc4\xc5\xcc\xd8\xce\xc9\xcb", + "\xd7\xd4\xcf\xd2\xce\xc9\xcb","\xd3\xd2\xc5\xc4\xc1", + "\xde\xc5\xd4\xd7\xc5\xd2\xc7","\xd0\xd1\xd4\xce\xc9\xc3\xc1", + "\xd3\xd5\xc2\xc2\xcf\xd4\xc1", + "\xd7\xcf\xd3\xcb\xd2\xc5\xd3\xc5\xce\xd8\xc5"]]; + $$d{"day_abb"}= + [["\xd0\xce\xc4","\xd7\xd4\xd2","\xd3\xd2\xc4","\xde\xd4\xd7", + "\xd0\xd4\xce","\xd3\xd5\xc2","\xd7\xd3\xcb"], + ["\xd0\xcf\xce","\xd7\xd4\xcf","\xd3\xd2e","\xde\xc5\xd4", + "\xd0\xd1\xd4","\xd3\xd5\xc2","\xd7\xcf\xd3\xcb"]]; + $$d{"day_char"}= + [["\xd0\xce","\xd7\xd4","\xd3\xd2","\xde\xd4","\xd0\xd4","\xd3\xc2", + "\xd7\xd3"]]; + + $$d{"num_suff"}= + [["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 "]]; + $$d{"num_word"}= + [["\xd0\xc5\xd2\xd7\xd9\xca","\xd7\xd4\xcf\xd2\xcf\xca", + "\xd4\xd2\xc5\xd4\xc9\xca","\xde\xc5\xd4\xd7\xc5\xd2\xd4\xd9\xca", + "\xd0\xd1\xd4\xd9\xca","\xdb\xc5\xd3\xd4\xcf\xca", + "\xd3\xc5\xc4\xd8\xcd\xcf\xca","\xd7\xcf\xd3\xd8\xcd\xcf\xca", + "\xc4\xc5\xd7\xd1\xd4\xd9\xca","\xc4\xc5\xd3\xd1\xd4\xd9\xca", + "\xcf\xc4\xc9\xce\xce\xc1\xc4\xc3\xc1\xd4\xd9\xca", + "\xc4\xd7\xc5\xce\xc1\xc4\xde\xc1\xd4\xd9\xca", + "\xd4\xd2\xc5\xce\xc1\xc4\xc3\xc1\xd4\xd9\xca", + "\xde\xc5\xd4\xd9\xd2\xce\xc1\xc4\xc3\xc1\xd4\xd9\xca", + "\xd0\xd1\xd4\xce\xc1\xc4\xc3\xc1\xd4\xd9\xca", + "\xdb\xc5\xd3\xd4\xce\xc1\xc4\xc3\xc1\xd4\xd9\xca", + "\xd3\xc5\xcd\xd8\xce\xc1\xc4\xc3\xc1\xd4\xd9\xca", + "\xd7\xcf\xd3\xc5\xcd\xd8\xce\xc1\xc4\xc3\xc1\xd4\xd9\xca", + "\xc4\xc5\xd7\xd1\xd4\xce\xc1\xc4\xc3\xc1\xd4\xd9\xca", + "\xc4\xd7\xc1\xc4\xc3\xc1\xd4\xd9\xca", + "\xc4\xd7\xc1\xc4\xc3\xc1\xd4\xd8 \xd0\xc5\xd2\xd7\xd9\xca", + "\xc4\xd7\xc1\xc4\xc3\xc1\xd4\xd8 \xd7\xd4\xcf\xd2\xcf\xca", + "\xc4\xd7\xc1\xc4\xc3\xc1\xd4\xd8 \xd4\xd2\xc5\xd4\xc9\xca", + "\xc4\xd7\xc1\xc4\xc3\xc1\xd4\xd8 \xde\xc5\xd4\xd7\xc5\xd2\xd4\xd9\xca", + "\xc4\xd7\xc1\xc4\xc3\xc1\xd4\xd8 \xd0\xd1\xd4\xd9\xca", + "\xc4\xd7\xc1\xc4\xc3\xc1\xd4\xd8 \xdb\xc5\xd3\xd4\xcf\xca", + "\xc4\xd7\xc1\xc4\xc3\xc1\xd4\xd8 \xd3\xc5\xc4\xd8\xcd\xcf\xca", + "\xc4\xd7\xc1\xc4\xc3\xc1\xd4\xd8 \xd7\xcf\xd3\xd8\xcd\xcf\xca", + "\xc4\xd7\xc1\xc4\xc3\xc1\xd4\xd8 \xc4\xc5\xd7\xd1\xd4\xd9\xca", + "\xd4\xd2\xc9\xc4\xc3\xc1\xd4\xd9\xca", + "\xd4\xd2\xc9\xc4\xc3\xc1\xd4\xd8 \xd0\xc5\xd2\xd7\xd9\xca"], + + ["\xd0\xc5\xd2\xd7\xcf\xc5","\xd7\xd4\xcf\xd2\xcf\xc5", + "\xd4\xd2\xc5\xd4\xd8\xc5","\xde\xc5\xd4\xd7\xc5\xd2\xd4\xcf\xc5", + "\xd0\xd1\xd4\xcf\xc5","\xdb\xc5\xd3\xd4\xcf\xc5", + "\xd3\xc5\xc4\xd8\xcd\xcf\xc5","\xd7\xcf\xd3\xd8\xcd\xcf\xc5", + "\xc4\xc5\xd7\xd1\xd4\xcf\xc5","\xc4\xc5\xd3\xd1\xd4\xcf\xc5", + "\xcf\xc4\xc9\xce\xce\xc1\xc4\xc3\xc1\xd4\xcf\xc5", + "\xc4\xd7\xc5\xce\xc1\xc4\xc3\xc1\xd4\xcf\xc5", + "\xd4\xd2\xc5\xce\xc1\xc4\xc3\xc1\xd4\xcf\xc5", + "\xde\xc5\xd4\xd9\xd2\xce\xc1\xc4\xc3\xc1\xd4\xcf\xc5", + "\xd0\xd1\xd4\xce\xc1\xc4\xc3\xc1\xd4\xcf\xc5", + "\xdb\xc5\xd3\xd4\xce\xc1\xc4\xc3\xc1\xd4\xcf\xc5", + "\xd3\xc5\xcd\xd8\xce\xc1\xc4\xc3\xc1\xd4\xcf\xc5", + "\xd7\xcf\xd3\xc5\xcd\xd8\xce\xc1\xc4\xc3\xc1\xd4\xcf\xc5", + "\xc4\xc5\xd7\xd1\xd4\xce\xc1\xc4\xc3\xc1\xd4\xcf\xc5", + "\xc4\xd7\xc1\xc4\xc3\xc1\xd4\xcf\xc5", + "\xc4\xd7\xc1\xc4\xc3\xc1\xd4\xd8 \xd0\xc5\xd2\xd7\xcf\xc5", + "\xc4\xd7\xc1\xc4\xc3\xc1\xd4\xd8 \xd7\xd4\xcf\xd2\xcf\xc5", + "\xc4\xd7\xc1\xc4\xc3\xc1\xd4\xd8 \xd4\xd2\xc5\xd4\xd8\xc5", + "\xc4\xd7\xc1\xc4\xc3\xc1\xd4\xd8 \xde\xc5\xd4\xd7\xc5\xd2\xd4\xcf\xc5", + "\xc4\xd7\xc1\xc4\xc3\xc1\xd4\xd8 \xd0\xd1\xd4\xcf\xc5", + "\xc4\xd7\xc1\xc4\xc3\xc1\xd4\xd8 \xdb\xc5\xd3\xd4\xcf\xc5", + "\xc4\xd7\xc1\xc4\xc3\xc1\xd4\xd8 \xd3\xc5\xc4\xd8\xcd\xcf\xc5", + "\xc4\xd7\xc1\xc4\xc3\xc1\xd4\xd8 \xd7\xcf\xd3\xd8\xcd\xcf\xc5", + "\xc4\xd7\xc1\xc4\xc3\xc1\xd4\xd8 \xc4\xc5\xd7\xd1\xd4\xcf\xc5", + "\xd4\xd2\xc9\xc4\xc3\xc1\xd4\xcf\xc5", + "\xd4\xd2\xc9\xc4\xc3\xc1\xd4\xd8 \xd0\xc5\xd2\xd7\xcf\xc5"], + + ["\xd0\xc5\xd2\xd7\xcf\xc7\xcf","\xd7\xd4\xcf\xd2\xcf\xc7\xcf", + "\xd4\xd2\xc5\xd4\xd8\xc5\xc7\xcf", + "\xde\xc5\xd4\xd7\xc5\xd2\xd4\xcf\xc7\xcf","\xd0\xd1\xd4\xcf\xc7\xcf", + "\xdb\xc5\xd3\xd4\xcf\xc7\xcf","\xd3\xc5\xc4\xd8\xcd\xcf\xc7\xcf", + "\xd7\xcf\xd3\xd8\xcd\xcf\xc7\xcf", + "\xc4\xc5\xd7\xd1\xd4\xcf\xc7\xcf","\xc4\xc5\xd3\xd1\xd4\xcf\xc7\xcf", + "\xcf\xc4\xc9\xce\xce\xc1\xc4\xc3\xc1\xd4\xcf\xc7\xcf", + "\xc4\xd7\xc5\xce\xc1\xc4\xc3\xc1\xd4\xcf\xc7\xcf", + "\xd4\xd2\xc5\xce\xc1\xc4\xc3\xc1\xd4\xcf\xc7\xcf", + "\xde\xc5\xd4\xd9\xd2\xce\xc1\xc4\xc3\xc1\xd4\xcf\xc7\xcf", + "\xd0\xd1\xd4\xce\xc1\xc4\xc3\xc1\xd4\xcf\xc7\xcf", + "\xdb\xc5\xd3\xd4\xce\xc1\xc4\xc3\xc1\xd4\xcf\xc7\xcf", + "\xd3\xc5\xcd\xd8\xce\xc1\xc4\xc3\xc1\xd4\xcf\xc7\xcf", + "\xd7\xcf\xd3\xc5\xcd\xd8\xce\xc1\xc4\xc3\xc1\xd4\xcf\xc7\xcf", + "\xc4\xc5\xd7\xd1\xd4\xce\xc1\xc4\xc3\xc1\xd4\xcf\xc7\xcf", + "\xc4\xd7\xc1\xc4\xc3\xc1\xd4\xcf\xc7\xcf", + "\xc4\xd7\xc1\xc4\xc3\xc1\xd4\xd8 \xd0\xc5\xd2\xd7\xcf\xc7\xcf", + "\xc4\xd7\xc1\xc4\xc3\xc1\xd4\xd8 \xd7\xd4\xcf\xd2\xcf\xc5", + "\xc4\xd7\xc1\xc4\xc3\xc1\xd4\xd8 \xd4\xd2\xc5\xd4\xd8\xc5\xc7\xcf", + "\xc4\xd7\xc1\xc4\xc3\xc1\xd4\xd8 \xde\xc5\xd4\xd7\xc5\xd2\xd4\xcf\xc7\xcf", + "\xc4\xd7\xc1\xc4\xc3\xc1\xd4\xd8 \xd0\xd1\xd4\xcf\xc7\xcf", + "\xc4\xd7\xc1\xc4\xc3\xc1\xd4\xd8 \xdb\xc5\xd3\xd4\xcf\xc7\xcf", + "\xc4\xd7\xc1\xc4\xc3\xc1\xd4\xd8 \xd3\xc5\xc4\xd8\xcd\xcf\xc7\xcf", + "\xc4\xd7\xc1\xc4\xc3\xc1\xd4\xd8 \xd7\xcf\xd3\xd8\xcd\xcf\xc7\xcf", + "\xc4\xd7\xc1\xc4\xc3\xc1\xd4\xd8 \xc4\xc5\xd7\xd1\xd4\xcf\xc7\xcf", + "\xd4\xd2\xc9\xc4\xc3\xc1\xd4\xcf\xc7\xcf", + "\xd4\xd2\xc9\xc4\xc3\xc1\xd4\xd8 \xd0\xc5\xd2\xd7\xcf\xc7\xcf"]]; + + $$d{"now"} =["\xd3\xc5\xc7\xcf\xc4\xce\xd1","\xd3\xc5\xca\xde\xc1\xd3"]; + $$d{"last"} =["\xd0\xcf\xd3\xcc\xc5\xc4\xce\xc9\xca"]; + $$d{"each"} =["\xcb\xc1\xd6\xc4\xd9\xca"]; + $$d{"of"} =[" "]; + $$d{"at"} =["\xd7"]; + $$d{"on"} =["\xd7"]; + $$d{"future"} =["\xd7\xd0\xc5\xd2\xc5\xc4 \xce\xc1"]; + $$d{"past"} =["\xce\xc1\xda\xc1\xc4 \xce\xc1 "]; + $$d{"next"} =["\xd3\xcc\xc5\xc4\xd5\xc0\xdd\xc9\xca"]; + $$d{"prev"} =["\xd0\xd2\xc5\xc4\xd9\xc4\xd5\xdd\xc9\xca"]; + $$d{"later"} =["\xd0\xcf\xda\xd6\xc5"]; + + $$d{"exact"} =["\xd4\xcf\xde\xce\xcf"]; + $$d{"approx"} =["\xd0\xd2\xc9\xcd\xc5\xd2\xce\xcf"]; + $$d{"business"}=["\xd2\xc1\xc2\xcf\xde\xc9\xc8"]; + + $$d{"offset"} =["\xd0\xcf\xda\xc1\xd7\xde\xc5\xd2\xc1","-0:0:0:2:0:0:0", + "\xd7\xde\xc5\xd2\xc1","-0:0:0:1:0:0:0", + "\xda\xc1\xd7\xd4\xd2\xc1","+0:0:0:1:0:0:0", + "\xd0\xcf\xd3\xcc\xc5\xda\xc1\xd7\xd4\xd2\xc1", + "+0:0:0:2:0:0:0"]; + $$d{"times"} =["\xd0\xcf\xcc\xc4\xc5\xce\xd8","12:00:00", + "\xd0\xcf\xcc\xce\xcf\xde\xd8","00:00:00"]; + + $$d{"years"} =["\xc7","\xc7\xc4","\xc7\xcf\xc4","\xcc\xc5\xd4", + "\xcc\xc5\xd4","\xc7\xcf\xc4\xc1"]; + $$d{"months"} =["\xcd\xc5\xd3","\xcd\xc5\xd3\xd1\xc3", + "\xcd\xc5\xd3\xd1\xc3\xc5\xd7"]; + $$d{"weeks"} =["\xce\xc5\xc4\xc5\xcc\xd1","\xce\xc5\xc4\xc5\xcc\xd8", + "\xce\xc5\xc4\xc5\xcc\xc9","\xce\xc5\xc4\xc5\xcc\xc0"]; + $$d{"days"} =["\xc4","\xc4\xc5\xce\xd8","\xc4\xce\xc5\xca", + "\xc4\xce\xd1"]; + $$d{"hours"} =["\xde","\xde.","\xde\xd3","\xde\xd3\xd7","\xde\xc1\xd3", + "\xde\xc1\xd3\xcf\xd7","\xde\xc1\xd3\xc1"]; + $$d{"minutes"} =["\xcd\xce","\xcd\xc9\xce","\xcd\xc9\xce\xd5\xd4\xc1", + "\xcd\xc9\xce\xd5\xd4"]; + $$d{"seconds"} =["\xd3","\xd3\xc5\xcb","\xd3\xc5\xcb\xd5\xce\xc4\xc1", + "\xd3\xc5\xcb\xd5\xce\xc4"]; + $$d{"replace"} =[]; + + $$d{"sephm"} ="[:\xde]"; + $$d{"sepms"} ="[:\xcd]"; + $$d{"sepss"} ="[:.\xd3]"; + + $$d{"am"} = ["\xc4\xd0","${a}\xf0","${a}.\xf0.","\xce\xcf\xde\xc9", + "\xd5\xd4\xd2\xc1", + "\xc4\xcf \xd0\xcf\xcc\xd5\xc4\xce\xd1"]; + $$d{"pm"} = ["\xd0\xd0","\xf0\xf0","\xf0.\xf0.","\xc4\xce\xd1", + "\xd7\xc5\xde\xc5\xd2\xc1", + "\xd0\xcf\xd3\xcc\xc5 \xd0\xcf\xcc\xd5\xc4\xce\xd1", + "\xd0\xcf \xd0\xcf\xcc\xd5\xc4\xce\xc0"]; +} + +sub Date_Init_Turkish { + print "DEBUG: Date_Init_Turkish\n" if ($Curr{"Debug"} =~ /trace/); + my($d)=@_; + + $$d{"month_name"}= + [ + ["ocak","subat","mart","nisan","mayis","haziran", + "temmuz","agustos","eylul","ekim","kasim","aralik"], + ["ocak","\xfeubat","mart","nisan","may\xfds","haziran", + "temmuz","a\xf0ustos","eyl\xfcl","ekim","kas\xfdm","aral\xfdk"] + ]; + + $$d{"month_abb"}= + [ + ["oca","sub","mar","nis","may","haz", + "tem","agu","eyl","eki","kas","ara"], + ["oca","\xfeub","mar","nis","may","haz", + "tem","a\xf0u","eyl","eki","kas","ara"] + ]; + + $$d{"day_name"}= + [ + ["pazartesi","sali","carsamba","persembe","cuma","cumartesi","pazar"], + ["pazartesi","sal\xfd","\xe7ar\xfeamba","per\xfeembe","cuma", + "cumartesi","pazar"], + ]; + + $$d{"day_abb"}= + [ + ["pzt","sal","car","per","cum","cts","paz"], + ["pzt","sal","\xe7ar","per","cum","cts","paz"], + ]; + + $$d{"day_char"}= + [["Pt","S","Cr","Pr","C","Ct","P"], + ["Pt","S","\xc7","Pr","C","Ct","P"]]; + + $$d{"num_suff"}= + [[ "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."]]; + + $$d{"num_word"}= + [ + ["birinci","ikinci","ucuncu","dorduncu", + "besinci","altinci","yedinci","sekizinci", + "dokuzuncu","onuncu","onbirinci","onikinci", + "onucuncu","ondordoncu", + "onbesinci","onaltinci","onyedinci","onsekizinci", + "ondokuzuncu","yirminci","yirmibirinci","yirmikinci", + "yirmiucuncu","yirmidorduncu", + "yirmibesinci","yirmialtinci","yirmiyedinci","yirmisekizinci", + "yirmidokuzuncu","otuzuncu","otuzbirinci"], + ["birinci","ikinci","\xfc\xe7\xfcnc\xfc","d\xf6rd\xfcnc\xfc", + "be\xfeinci","alt\xfdnc\xfd","yedinci","sekizinci", + "dokuzuncu","onuncu","onbirinci","onikinci", + "on\xfc\xe7\xfcnc\xfc","ond\xf6rd\xfcnc\xfc", + "onbe\xfeinci","onalt\xfdnc\xfd","onyedinci","onsekizinci", + "ondokuzuncu","yirminci","yirmibirinci","yirmikinci", + "yirmi\xfc\xe7\xfcnc\xfc","yirmid\xf6rd\xfcnc\xfc", + "yirmibe\xfeinci","yirmialt\xfdnc\xfd","yirmiyedinci","yirmisekizinci", + "yirmidokuzuncu","otuzuncu","otuzbirinci"] + ]; + + $$d{"now"} =["\xfeimdi", "simdi", "bugun","bug\xfcn"]; + $$d{"last"} =["son", "sonuncu"]; + $$d{"each"} =["her"]; + $$d{"of"} =["of"]; + $$d{"at"} =["saat"]; + $$d{"on"} =["on"]; + $$d{"future"} =["gelecek"]; + $$d{"past"} =["ge\xe7mi\xfe", "gecmis","gecen", "ge\xe7en"]; + $$d{"next"} =["gelecek","sonraki"]; + $$d{"prev"} =["onceki","\xf6nceki"]; + $$d{"later"} =["sonra"]; + + $$d{"exact"} =["tam"]; + $$d{"approx"} =["yakla\xfe\xfdk", "yaklasik"]; + $$d{"business"}=["i\xfe","\xe7al\xfd\xfema","is", "calisma"]; + + $$d{"offset"} =["d\xfcn","-0:0:0:1:0:0:0", + "dun", "-0:0:0:1:0:0:0", + "yar\xfdn","+0:0:0:1:0:0:0", + "yarin","+0:0:0:1:0:0:0"]; + + $$d{"times"} =["\xf6\xf0len","12:00:00", + "oglen","12:00:00", + "yarim","12:300:00", + "yar\xfdm","12:30:00", + "gece yar\xfds\xfd","00:00:00", + "gece yarisi","00:00:00"]; + + $$d{"years"} =["yil","y"]; + $$d{"months"} =["ay","a"]; + $$d{"weeks"} =["hafta", "h"]; + $$d{"days"} =["gun","g"]; + $$d{"hours"} =["saat"]; + $$d{"minutes"} =["dakika","dak","d"]; + $$d{"seconds"} =["saniye","sn",]; + $$d{"replace"} =["s","saat"]; + + $$d{"sephm"} =':'; + $$d{"sepms"} =':'; + $$d{"sepss"} ='[.:,]'; + + $$d{"am"} = ["\xf6gleden \xf6nce","ogleden once"]; + $$d{"pm"} = ["\xf6\xf0leden sonra","ogleden sonra"]; +} + +sub Date_Init_Danish { + print "DEBUG: Date_Init_Danish\n" if ($Curr{"Debug"} =~ /trace/); + my($d)=@_; + + $$d{"month_name"}= + [["Januar","Februar","Marts","April","Maj","Juni", + "Juli","August","September","Oktober","November","December"]]; + $$d{"month_abb"}= + [["Jan","Feb","Mar","Apr","Maj","Jun", + "Jul","Aug","Sep","Okt","Nov","Dec"]]; + + $$d{"day_name"}= + [["Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lordag","Sondag"], + ["Mandag","Tirsdag","Onsdag","Torsdag","Fredag","L\xf8rdag","S\xf8ndag"]]; + + $$d{"day_abb"}= + [["Man","Tis","Ons","Tor","Fre","Lor","Son"], + ["Man","Tis","Ons","Tor","Fre","L\xf8r","S\xf8n"]]; + $$d{"day_char"}= + [["M","Ti","O","To","F","L","S"]]; + + $$d{"num_suff"}= + [["1:e","2:e","3:e","4:e","5:e","6:e","7:e","8:e","9:e","10:e", + "11:e","12:e","13:e","14:e","15:e","16:e","17:e","18:e","19:e","20:e", + "21:e","22:e","23:e","24:e","25:e","26:e","27:e","28:e","29:e","30:e", + "31:e"]]; + $$d{"num_word"}= + [["forste","anden","tredie","fjerde","femte","sjette","syvende", + "ottende","niende","tiende","elfte","tolvte","trettende","fjortende", + "femtende","sekstende","syttende","attende","nittende","tyvende", + "enogtyvende","toogtyvende","treogtyvende","fireogtyvende","femogtyvende", + "seksogtyvende","syvogtyvende","otteogtyvende","niogtyvende", + "tredivte","enogtredivte"], + ["f\xf8rste","anden","tredie","fjerde","femte","sjette","syvende", + "ottende","niende","tiende","elfte","tolvte","trettende","fjortende", + "femtende","sekstende","syttende","attende","nittende","tyvende", + "enogtyvende","toogtyvende","treogtyvende","fireogtyvende","femogtyvende", + "seksogtyvende","syvogtyvende","otteogtyvende","niogtyvende", + "tredivte","enogtredivte"]]; + + $$d{"now"} =["idag","nu"]; + $$d{"last"} =["forrige","sidste","nyeste"]; + $$d{"each"} =["hver"]; + $$d{"of"} =["om"]; + $$d{"at"} =["kl","kl.","klokken"]; + $$d{"on"} =["pa","p\xe5"]; + $$d{"future"} =["om"]; + $$d{"past"} =["siden"]; + $$d{"next"} =["nasta","n\xe6ste"]; + $$d{"prev"} =["forrige"]; + $$d{"later"} =["senere"]; + + $$d{"exact"} =["pracist","pr\xe6cist"]; + $$d{"approx"} =["circa"]; + $$d{"business"}=["arbejdsdag","arbejdsdage"]; + + $$d{"offset"} =["ig\xe5r","-0:0:0:1:0:0:0","igar","-0:0:0:1:0:0:0", + "imorgen","+0:0:0:1:0:0:0"]; + $$d{"times"} =["midt pa dagen","12:00:00","midt p\xe5 dagen","12:00:00", + "midnat","00:00:00"]; + + $$d{"years"} =["ar","\xe5r"]; + $$d{"months"} =["man","maned","maneder","m\xe5n","m\xe5ned","m\xe5neder"]; + $$d{"weeks"} =["u","uge","uger"]; + $$d{"days"} =["d","dag","dage"]; + $$d{"hours"} =["t","tim","time","timer"]; + $$d{"minutes"} =["min","minut","minutter"]; + $$d{"seconds"} =["s","sek","sekund","sekunder"]; + $$d{"replace"} =["m","minut"]; + + $$d{"sephm"} ='[.:]'; + $$d{"sepms"} =':'; + $$d{"sepss"} ='[.:]'; + + $$d{"am"} = ["FM"]; + $$d{"pm"} = ["EM"]; +} + ######################################################################## # FROM MY PERSONAL LIBRARIES ######################################################################## @@ -6639,6 +7168,7 @@ # of knowing we are on one of these systems: return "" if ($OS eq "Windows" or $OS eq "Mac" or + $OS eq "Netware" or $OS eq "MPE"); $user="" if (! defined $user); @@ -6647,6 +7177,7 @@ } else { $home= (getpwuid($<))[7]; } + $home = VMS::Filespec::unixpath($home) if ($OS eq "VMS"); return "" if (! $home); $file="$home/$file"; } From eperalesaac.upc.edu Wed May 17 06:00:41 2006 From: eperalesaac.upc.edu (Eva Perales Laguna) Date: Wed, 17 May 2006 15:00:41 +0200 Subject: [bcn-pm] Date::Manip In-Reply-To: <20060517124753.GB2687@ac.upc.edu> References: <20060516140805.GC26058@ac.upc.edu> <20060517124753.GB2687@ac.upc.edu> Message-ID: <20060517130041.GC2687@ac.upc.edu> On Wed, May 17, 2006 at 02:47:53PM +0200, Eva Perales Laguna wrote: > > M'he estat mirant el resultat del diff i sembla que la cosa está en > els canvis fets a la Ups, sembla que el mail anterior no l'he enviat bé. Em referia a la funció ParseDateDelta -- Eva From jluisaescomposlinux.org Thu May 18 04:57:56 2006 From: jluisaescomposlinux.org (=?iso-8859-1?q?Jos=E9_Luis_P=E9rez_Diez?=) Date: Thu, 18 May 2006 13:57:56 +0200 Subject: [bcn-pm] Date::Manip In-Reply-To: <20060517130041.GC2687@ac.upc.edu> References: <20060516140805.GC26058@ac.upc.edu> <20060517124753.GB2687@ac.upc.edu> <20060517130041.GC2687@ac.upc.edu> Message-ID: <200605181358.03932.jluis@escomposlinux.org> On Wednesday 17 May 2006 15:00, Eva Perales Laguna wrote: > Ups, sembla que el mail anterior no l'he enviat bé. Em referia a la > funció ParseDateDelta El problema es a ParseDateSrtring. A les version actuals de Date::Manip donen una data buida per entrades com ara "-12" i "-12d" y valides per "-12days" i "+-12d". Si vols que els scripts et funcione correctament a les versions posteriors de Date::Manip yo procuraria que totes les Deltes portin el signe + -------------- següent part -------------- Un adjunt de no-text ha estat eliminat... Nom: no disponible Tipus: application/pgp-signature volum: 189 bytes Desc: no disponible Url : http://mail.pm.org/pipermail/barcelona-pm/attachments/20060518/e15cee51/attachment.bin From timothychenallenagmail.com Thu May 18 14:00:49 2006 From: timothychenallenagmail.com (Timothy Chen Allen) Date: Thu, 18 May 2006 17:00:49 -0400 Subject: [bcn-pm] Reunion de Junio? Message-ID: Hola a todos, Estare en Barcelona los dias 18-27 de Junio este anyo. Habra alguna reunion? Hace un par de anyos que no os veo. Una abrazo a todos. -- Timothy Chen Allen TimothyChenAllenagmail.com http://www.timallen.org/blog Skype:TimothyChenAllen -------------- següent part -------------- Un document HTML ha estat eliminat... URL: http://mail.pm.org/pipermail/barcelona-pm/attachments/20060518/08edfd8c/attachment.html From fxnahashref.com Thu May 18 15:01:06 2006 From: fxnahashref.com (Xavier Noria) Date: Fri, 19 May 2006 00:01:06 +0200 Subject: [bcn-pm] Reunion de Junio? In-Reply-To: References: Message-ID: On May 18, 2006, at 23:00, Timothy Chen Allen wrote: > Hola a todos, > > Estare en Barcelona los dias 18-27 de Junio este anyo. Habra > alguna reunion? Hace un par de anyos que no os veo. En teoria toca el dia 29, pero si vas a estar por aqui entonces HAY :-) que moverla al 22. Que decis mongers? -- fxn P.D.: BTW Tim, ahora nos reunimos en el Viena de la calle Pelayo. From cesatablinum.org Thu May 18 16:59:46 2006 From: cesatablinum.org (Carlos Escribano) Date: Fri, 19 May 2006 01:59:46 +0200 Subject: [bcn-pm] Reunion de Junio? In-Reply-To: References: Message-ID: <200605190159.54797.ces@tablinum.org> > En teoria toca el dia 29, pero si vas a estar por aqui entonces > HAY :-) que moverla al 22. Que decis mongers? Si podemos contar con Tim ese dia, perfecto! -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 189 bytes Desc: not available Url : http://mail.pm.org/pipermail/barcelona-pm/attachments/20060519/902e9531/attachment.bin From frankieaetsetb.upc.edu Thu May 18 23:15:11 2006 From: frankieaetsetb.upc.edu (Francesc Guasch) Date: Fri, 19 May 2006 08:15:11 +0200 Subject: [bcn-pm] Reunion de Junio? In-Reply-To: References: Message-ID: <446D626F.50609@etsetb.upc.edu> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 En/na Xavier Noria ha escrit: > HAY :-) que moverla al 22. Que decis mongers? vale -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.2.2 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org iD8DBQFEbWJmVfvsWQAffzIRAjICAJ9h9P2x3njquoT5C6AdlRwaVFhOHQCfQkuf YPfLfepjNQi6L0hkvhDBIL0= =ruT/ -----END PGP SIGNATURE----- From wjperezdagencat.net Thu May 18 23:36:15 2006 From: wjperezdagencat.net (Jose Luis Perez Diez) Date: Fri, 19 May 2006 08:36:15 +0200 Subject: [bcn-pm] Reunion de Junio? In-Reply-To: References: Message-ID: <200605190836.24518.wjperezd@gencat.net> On Friday 19 May 2006 00:01, Xavier Noria wrote: > En teoria toca el dia 29, pero si vas a estar por aqui entonces   > HAY :-) que moverla al 22. Que decis mongers? Creo que siempre sera mejor una reunion de junio com TIm incluso aunque no sea Jueves -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 189 bytes Desc: not available Url : http://mail.pm.org/pipermail/barcelona-pm/attachments/20060519/c5ab01b4/attachment.bin From fxnahashref.com Fri May 19 00:00:08 2006 From: fxnahashref.com (Xavier Noria) Date: Fri, 19 May 2006 09:00:08 +0200 Subject: [bcn-pm] Reunion de Junio? In-Reply-To: <200605190836.24518.wjperezd@gencat.net> References: <200605190836.24518.wjperezd@gencat.net> Message-ID: <364851AD-BB14-4FE5-8541-E329B2F41778@hashref.com> On May 19, 2006, at 8:36, Jose Luis Perez Diez wrote: > On Friday 19 May 2006 00:01, Xavier Noria wrote: >> En teoria toca el dia 29, pero si vas a estar por aqui entonces >> HAY :-) que moverla al 22. Que decis mongers? > > Creo que siempre sera mejor una reunion de junio com TIm incluso > aunque no sea > Jueves Ojo que hablamos de junio! -- fxn From wjperezdagencat.net Fri May 19 00:17:49 2006 From: wjperezdagencat.net (Jose Luis Perez Diez) Date: Fri, 19 May 2006 09:17:49 +0200 Subject: [bcn-pm] Reunion de Junio? In-Reply-To: <364851AD-BB14-4FE5-8541-E329B2F41778@hashref.com> References: <200605190836.24518.wjperezd@gencat.net> <364851AD-BB14-4FE5-8541-E329B2F41778@hashref.com> Message-ID: <200605190917.49829.wjperezd@gencat.net> On Friday 19 May 2006 09:00, Xavier Noria wrote: > >> En teoria toca el dia 29, pero si vas a estar por aqui entonces > >> HAY :-) que moverla al 22. Que decis mongers? > > > > Creo que siempre sera mejor una reunion de junio com TIm incluso   > > aunque no sea > > Jueves > > Ojo que hablamos de junio! Ya pero confio en el buen sentido de Tim de no programarla ni en la verbena ni en SanJuan. El 22 Me parece Buena fecha From alexmaalexm.org Fri May 19 01:15:11 2006 From: alexmaalexm.org (Alex Muntada) Date: Fri, 19 May 2006 10:15:11 +0200 Subject: [bcn-pm] Reunion de Junio? In-Reply-To: References: Message-ID: <20060519081511.GB23306@ac.upc.edu> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 * Xavier Noria : [2006-05-19 00:01:06 +0200] > En teoria toca el dia 29, pero si vas a estar por aqui entonces > HAY :-) que moverla al 22. Que decis mongers? Vale, però tingueu en compte que el 22 i 23 de juny també es farà a Barcelona la tercera conferència internacional sobre la GPLv3: http://mail.fsfeurope.org/pipermail/press-release/2006q2/000141.html /alexm -----BEGIN PGP SIGNATURE----- iD8DBQFEbX6LLdxCGS3zaBERAr1iAJ9OwAZmigXKAxuH2yONQMcySL6YTQCgnzgy 9RpFtmadhj8Qx82V/NphHpI= =V+Ft -----END PGP SIGNATURE----- From fxnahashref.com Fri May 19 01:49:04 2006 From: fxnahashref.com (Xavier Noria) Date: Fri, 19 May 2006 10:49:04 +0200 Subject: [bcn-pm] Reunion de Junio? In-Reply-To: <200605190917.49829.wjperezd@gencat.net> References: <200605190836.24518.wjperezd@gencat.net> <364851AD-BB14-4FE5-8541-E329B2F41778@hashref.com> <200605190917.49829.wjperezd@gencat.net> Message-ID: On May 19, 2006, at 9:17, Jose Luis Perez Diez wrote: > On Friday 19 May 2006 09:00, Xavier Noria wrote: >>>> En teoria toca el dia 29, pero si vas a estar por aqui entonces >>>> HAY :-) que moverla al 22. Que decis mongers? >>> >>> Creo que siempre sera mejor una reunion de junio com TIm incluso >>> aunque no sea >>> Jueves >> >> Ojo que hablamos de junio! > > Ya pero confio en el buen sentido de Tim de no programarla ni en la > verbena ni > en SanJuan. El 22 Me parece Buena fecha Ahhh, interprete "OK el 22 aunque no sea jueves" :-) From fxnahashref.com Fri May 19 01:49:53 2006 From: fxnahashref.com (Xavier Noria) Date: Fri, 19 May 2006 10:49:53 +0200 Subject: [bcn-pm] Reunion de Junio? In-Reply-To: <20060519081511.GB23306@ac.upc.edu> References: <20060519081511.GB23306@ac.upc.edu> Message-ID: On May 19, 2006, at 10:15, Alex Muntada wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > * Xavier Noria : > [2006-05-19 00:01:06 +0200] > >> En teoria toca el dia 29, pero si vas a estar por aqui entonces >> HAY :-) que moverla al 22. Que decis mongers? > > Vale, però tingueu en compte que el 22 i 23 de juny també es > farà a Barcelona la tercera conferència internacional sobre la > GPLv3: Cal un altre dia doncs, que tal dimarts dia 20? From timothychenallenagmail.com Sun May 21 16:04:10 2006 From: timothychenallenagmail.com (Timothy Chen Allen) Date: Sun, 21 May 2006 19:04:10 -0400 Subject: [bcn-pm] Reunion de Junio? In-Reply-To: References: Message-ID: Gracias-- yo asistiré a reunión cuando sea-- avisadme de la hora y el sitio y vendré. On 5/18/06, Xavier Noria wrote: > > On May 18, 2006, at 23:00, Timothy Chen Allen wrote: > > > Hola a todos, > > > > Estare en Barcelona los dias 18-27 de Junio este anyo. Habra > > alguna reunion? Hace un par de anyos que no os veo. > > En teoria toca el dia 29, pero si vas a estar por aqui entonces > HAY :-) que moverla al 22. Que decis mongers? > > -- fxn > > P.D.: BTW Tim, ahora nos reunimos en el Viena de la calle Pelayo. > > -------------- següent part -------------- Un document HTML ha estat eliminat... URL: http://mail.pm.org/pipermail/barcelona-pm/attachments/20060521/937aed9a/attachment.html From eperalesaac.upc.edu Sun May 21 23:55:06 2006 From: eperalesaac.upc.edu (Eva Perales Laguna) Date: Mon, 22 May 2006 08:55:06 +0200 Subject: [bcn-pm] Date::Manip In-Reply-To: <20060517130433.87198.qmail@web52703.mail.yahoo.com> References: <20060517130433.87198.qmail@web52703.mail.yahoo.com> Message-ID: <20060522065506.GA17325@ac.upc.edu> On Wed, May 17, 2006 at 06:04:33AM -0700, Salvador Fandiño wrote: > > con perl 5.8.8 y Date::Manip 5.44 el resultado es el correcto: > > $ perl -MDate::Manip -le 'Date_Init("DateFormat=non-US"); \ > $x = DateCalc("29/09/2005","-15d"); \ > print "$], $Date::Manip::VERSION, $x\n"' > > 5.008008, 5.44, 2005091400:00:00 Ok, aleshores sembla que el bug, o el que fos, ja ha estat solucionat en les versions posteriors les que tinc jo. > > De todas formas para hacer calculos con fechas, el mejor modulo hoy > en dia es DateTime, y ademas puedes usar DateTime::Format::DateManip > para convertir entre ambos. No coneixia aquest mòdul. El probaré. Gracies a tots pels vostres comentaris. -- Eva From alexmaalexm.org Mon May 22 03:19:25 2006 From: alexmaalexm.org (Alex Muntada) Date: Mon, 22 May 2006 12:19:25 +0200 Subject: [bcn-pm] Reunion de Junio? In-Reply-To: References: <20060519081511.GB23306@ac.upc.edu> Message-ID: <20060522101925.GA1046@ac.upc.edu> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 * Xavier Noria : [2006-05-19 10:49:53 +0200] > Cal un altre dia doncs, que tal dimarts dia 20? Home, jo no sé si cal. Només ho comentava per tal que tothom ho tingui present. En qualsevol cas, dimarts 20 també em sembla bé. /alexm -----BEGIN PGP SIGNATURE----- iD8DBQFEcZAcLdxCGS3zaBERAst1AKDlTSF0zNwQbwlnRP+jmWKhqDt6qQCgpbkV Ov+wq+OVEOvmPyC6HBCRrJ0= =a9lq -----END PGP SIGNATURE----- From jdelgadoalsi.upc.edu Mon May 22 03:57:17 2006 From: jdelgadoalsi.upc.edu (Jordi Delgado) Date: Mon, 22 May 2006 12:57:17 +0200 Subject: [bcn-pm] Frikis In-Reply-To: <20060522101925.GA1046@ac.upc.edu> References: <20060519081511.GB23306@ac.upc.edu> <20060522101925.GA1046@ac.upc.edu> Message-ID: <20060522105717.GA6610@nodoiuna.lsi.upc.edu> Hola Mongers, Com ja haureu vist, he brillat per la meva absencia en les darreres reunions. Em sap molt de greu, pero el meu doctorand ha acabat la tesi ara (la defensa el mes que ve) i el seu seguiment s'ha unit a la feina habitual, a mes que els dijous he hagut de fer classe de 19 a 21 a Vilanova i la Geltru. En fi, he anat de cul, as usual. Nomes us volia comentar una solemne tonteria, pero que a mi em fa una gracia especial. Ja sabeu la fama de frikis que tenim els informatics; a mes, entre els informatics, ja sabeu la fama de frikis que tenen els que programen en Perl (ja sabeu, serien meta-frikis, els frikis dels frikis). Be, al marge de com us ho prengueu aixo (conec gent que no s'ho pren massa be :-)), tingueu (o no) en compte que aquest dijous, dia de reunio -casualitat???-, es el "Dia del Orgullo Friki" (http://www.orgullofriki.com). Jo si que n'estic d'orgullos de que em considerin friki... Enjoy! Salut! Jordi From wjperezdagencat.net Mon May 22 06:52:49 2006 From: wjperezdagencat.net (Jose Luis Perez Diez) Date: Mon, 22 May 2006 15:52:49 +0200 Subject: [bcn-pm] [OT] Frikis antiga Reunion de Junio? In-Reply-To: <20060522105717.GA6610@nodoiuna.lsi.upc.edu> References: <20060522101925.GA1046@ac.upc.edu> <20060522105717.GA6610@nodoiuna.lsi.upc.edu> Message-ID: <200605221552.50206.wjperezd@gencat.net> On Monday 22 May 2006 12:57, Jordi Delgado wrote: >.... es el "Dia del Orgullo > Friki" (http://www.orgullofriki.com). Jo si que n'estic d'orgullos de que > em considerin friki... =FLAME Si us plau no sigueu normals: - no feu servir el hiper-enllaç a resposta o resposta a la llista - si el feu servir preneu-vos les molesties de treure el reply-to - encara queda gent amb MUA que respecten els standars =END Jo ja pensava que el " dia del Orgullo friqui" era un mes en el futuro cap al dia 20060622 pel reply to i les referencies. From perl_nellatelefonica.net Tue May 23 15:12:26 2006 From: perl_nellatelefonica.net (Enrique Nell) Date: Wed, 24 May 2006 00:12:26 +0200 Subject: [bcn-pm] Oferta de Apress In-Reply-To: <20060522105717.GA6610@nodoiuna.lsi.upc.edu> Message-ID: <44721E2200030C2A@ctsmtpout2.frontal.correo> (added by postmaster@telefonica.net) Por si a alguien le interesa: http://www.apress.com/promo/perlbundle.html Saludos Enrique From xdrudisatinet.cat Wed May 24 12:47:08 2006 From: xdrudisatinet.cat (xdrudis) Date: Wed, 24 May 2006 21:47:08 +0200 Subject: [bcn-pm] =?iso-8859-1?q?IPC=3A=3AOpen3_d=27un_executable_que_no_e?= =?iso-8859-1?q?xisteix_i_gesti=F3_d=27errors?= Message-ID: <20060524194708.GA4141@ideafix.casa.ct> Hola. M'he passat dos dies (bé, suposo que ben comptat un) per caure en el què passava. Resulta que volia cridar un procés (com qui fa un system()) però m'interessava capturar la sortida d'error per gestionar-la pel meu compte (a més de tornar-la a treure per stderr . Si hagués sabut el que em costaria hauria fet un tee i llegit el fitxer, però semblava més elegant això del open3 , tal com diu el perldoc -q stderr Bé. Doncs primer he tingut problemes amb l'stdin (no he aconseguit que el procés fill llegeixi el meu stdin però sí que escrigui al meu stdout, no sé perquè). Me n'he cansat i total d'això en podia prescindint, o sia que li he passat un símbol de gensim i a còrrer. Igual era culpa de l'altra error i si ho tornés a provar ara funcionaria. Però el problema rar era que de sobte, a partir d'un punt del fitxer de prova em duplicava la sortida del fitxer (stdout i stderr) i no entenia perquè. Ara m'he rellegit el perldoc IPC::Open3 de la debian Sid (perl 5.8.8) i entre que es més nou i que jo ja sabia la solució ho he entés una mica (no gaire) però a la feina tenia un perl 5.8.2 (en AIX :( ) i no ho he entés. Diu que si falla l'exec (com ara si l'executable que vols cridar no existeix, suposo), reps un SIGPIPE. Doncs jo he posat un handleret i ni cas, no el rebia pas. El que si rebia era una exepció, abortava l'eval i quedava l'error al $@. Però el que m'ha costat d'entendre és que el die o el croak o el que sigui el feia el procés fill . D'alguna manera pensava que en cas d'error l'Open3 mataria el fill que havia creat i donaria l'excepció el pare, però no, deixa el fill viu. I clar, a partir que el joc de proves cridava a un executable que no existia per provar la gestió d'errors, la resta de proves les feina dues vegades (una vegada el pare i una el fill). I és que, que cridis a un open3 i en sortir de l'eval per excepció tinguis dos processos engegats per comptes d'un, no sé, m'ha costat caure-hi. Ho he solucionat mirant el pid ($$) al sortir de l'eval i si no era el mateix que a l'entrar faig exit (el fill es suicida i el pare segueix). Trobeu que és normal que funcioni així?. Està poc documentat o sóc jo una mica curt ? P.D. Demà al Viena oi?. Igual vinc per primer cop. Ara que treballo a Barcelona em va millor. -- Xavi Drudis Ferran xdrudisatinet.cat From pancakeaphreaker.net Wed May 24 14:25:10 2006 From: pancakeaphreaker.net (pancake) Date: Wed, 24 May 2006 23:25:10 +0200 Subject: [bcn-pm] symbian-perl Message-ID: <20060524232510.de44c19d.pancake@phreaker.net> M'he instalat perl al mòvil (s60) i he estat juguetejant una mica i sembla que va prou bé (es poden fer sockets raw i tot). Pero té dos problemes: 1) no te api per accedir a la GUI de symbian.. aixi q nomes es poden fer apps en mode text (q no es q em molesti tp gaire..) 2) no funciona es . No hi ha forma de fer q interpreti el "intro" i acabi de llegir del buffer. L'heu provat vosaltres tb? Sabeu si es pot solucionar aixo d'alguna forma? Merci d'avantmà :) From fxnahashref.com Thu May 25 00:11:28 2006 From: fxnahashref.com (Xavier Noria) Date: Thu, 25 May 2006 09:11:28 +0200 Subject: [bcn-pm] =?iso-8859-1?q?IPC=3A=3AOpen3_d=27un_executable_que_no_e?= =?iso-8859-1?q?xisteix_i_gesti=F3_d=27errors?= In-Reply-To: <20060524194708.GA4141@ideafix.casa.ct> References: <20060524194708.GA4141@ideafix.casa.ct> Message-ID: On May 24, 2006, at 21:47, xdrudis wrote: > M'he passat dos dies (bé, suposo que ben comptat un) per caure en > el què > passava. Ei Xavi! Merci pel report :-). > P.D. Demà al Viena oi?. Igual vinc per primer cop. Ara que treballo > a Barcelona > em va millor. En efecte. Escolta, si vens per que no dus el codi aquest i en parlem? -- fxn From xdrudisatinet.cat Thu May 25 01:19:34 2006 From: xdrudisatinet.cat (Xavi Drudis Ferran) Date: Thu, 25 May 2006 10:19:34 +0200 (CEST) Subject: [bcn-pm] =?iso-8859-1?q?IPC=3A=3AOpen3_d=27un_executable_que_no_e?= =?iso-8859-1?q?xisteix_i_gesti=F3_d=27errors?= In-Reply-To: References: <20060524194708.GA4141@ideafix.casa.ct> Message-ID: <11069.195.235.176.225.1148545174.squirrel@webmail.tinet.org> >> P.D. Demà al Viena oi?. Igual vinc per primer cop. Ara que treballo >> a Barcelona >> em va millor. > > En efecte. Escolta, si vens per que no dus el codi aquest i en parlem? > No en tinc els drets d'autor, però si aconsegueixo una impressora, suposo que podria portar-lo en paper. O un altre dia fer un cas de prova més senzill. From fxnahashref.com Thu May 25 01:35:11 2006 From: fxnahashref.com (Xavier Noria) Date: Thu, 25 May 2006 10:35:11 +0200 Subject: [bcn-pm] =?iso-8859-1?q?IPC=3A=3AOpen3_d=27un_executable_que_no_e?= =?iso-8859-1?q?xisteix_i_gesti=F3_d=27errors?= In-Reply-To: <11069.195.235.176.225.1148545174.squirrel@webmail.tinet.org> References: <20060524194708.GA4141@ideafix.casa.ct> <11069.195.235.176.225.1148545174.squirrel@webmail.tinet.org> Message-ID: <39424D18-4E61-46B5-97B1-18D0E7DD16D4@hashref.com> On May 25, 2006, at 10:19, Xavi Drudis Ferran wrote: >>> P.D. Demà al Viena oi?. Igual vinc per primer cop. Ara que treballo >>> a Barcelona >>> em va millor. >> >> En efecte. Escolta, si vens per que no dus el codi aquest i en >> parlem? >> > > No en tinc els drets d'autor, però si aconsegueixo una impressora, > suposo > que podria portar-lo en paper. O un altre dia fer un cas de prova més > senzill. Ah! Es clar, potser ho podriem reproduir amb un codi breu in situ? Jo dure un portatil. -- fxn From xdrudisatinet.cat Thu May 25 13:08:46 2006 From: xdrudisatinet.cat (xdrudis) Date: Thu, 25 May 2006 22:08:46 +0200 Subject: [bcn-pm] =?iso-8859-1?q?IPC=3A=3AOpen3_d=27un_executable_que_no_e?= =?iso-8859-1?q?xisteix_i_gesti=F3_d=27errors?= In-Reply-To: <20060524194708.GA4141@ideafix.casa.ct> References: <20060524194708.GA4141@ideafix.casa.ct> Message-ID: <20060525200846.GA4064@ideafix.casa.ct> A la reunió el Salvador (m'equivoco de persona?, sóc un desastre) m'ha convençut que és un bug a IPC::Open3 que quan l'exec falla al fill fa un croak però hauria de fer un exit. Adjunto un script ràpid fet al metro per provar-ho. No sé si s'enten gaire tot sol però ara estare dos o tres dies ocupat i mal connectat a la xarxa i fora que se m'oblidi. Ja informaré quan torni. Moltes gràcies a tots, i espero que ens tornem a veure. -- Xavi Drudis Ferran xdrudisatinet.cat -------------- següent part -------------- Un adjunt de no-text ha estat eliminat... Nom: open3.pl Tipus: text/x-perl volum: 1446 bytes Desc: no disponible Url : http://mail.pm.org/pipermail/barcelona-pm/attachments/20060525/e9bd31b3/attachment.bin From salvaavesbot.com Fri May 26 02:29:11 2006 From: salvaavesbot.com (=?ISO-8859-1?Q?Salvador_Fandi=F1o?=) Date: Fri, 26 May 2006 11:29:11 +0200 Subject: [bcn-pm] IPC::Open3 d'un executable que no existeix i gesti d'errors Message-ID: <4476CA67.8030104@vesbot.com> Hola, Primero, disculpas por enviar el mensaje como nuevo ;-) por algun motivo, los mensajes que envio desde mi cuenta de yahoo, que es con la que estoy subscrito, no llegan a la lista. Alguien tiene idea de por que puede ser? Y ya, a lo que iba, una version reducida del problema: use IPC::Open3; eval { open3("<&STDIN", ">&STDOUT", ">&STDERR", "/foo/bar") }; print "$$ was here\n"; y otro problema similar que no se soluciona sustituyendo la llamada a croak por exit: use IPC::Open3; END { print "END: $$ was here\n"; } open3("<&STDIN", ">&STDOUT", ">&STDERR", "/foo/bar"); En realidad hay que llamar a POSIX::_exit que sale sin realizar ningun tipo de "limpieza" o si no se quiere cargar el modulo POSIX que es bastante pesado, hacer que el proceso hijo se suicide con kill(9, $$) o con un exec("/bin/false"); En fin, Xavi, envias tu el bug report? - Salva From fxnahashref.com Tue May 30 12:59:28 2006 From: fxnahashref.com (Xavier Noria) Date: Tue, 30 May 2006 21:59:28 +0200 Subject: [bcn-pm] reunio de juny Message-ID: Hola companyers, nomes dir que a la reunio passada varem quedar que la reunio de juny es mou al dimarts dia 20 de cara a que en Tim s'hi pugui passar, al Viena de Pelai com es ara habitual. De moment no hi ha xerrada prevista. Salut i republica Perl, -- fxn From esteveasindominio.net Tue May 30 14:11:21 2006 From: esteveasindominio.net (Esteve Fernandez) Date: Tue, 30 May 2006 23:11:21 +0200 Subject: [bcn-pm] reunio de juny In-Reply-To: References: Message-ID: <200605302311.23397.esteve@sindominio.net> El Martes, 30 de Mayo de 2006 21:59, Xavier Noria escribió: > Hola companyers, nomes dir que a la reunio passada varem quedar que > la reunio de juny es mou al > > dimarts dia 20 > > de cara a que en Tim s'hi pugui passar, al Viena de Pelai com es ara > habitual. De moment no hi ha xerrada prevista. Ho vam estar parlant al principi i bé, podria preparar-me una sobre Lingua::Romana:Perligata (Perl en llatí), per si a algú li interessa. La utilitat és nul·la, excepte per guanyar concursos de frikisme i per picar al teu profe de Perl, però té la seva gràcia :) Salutacions. From fxnahashref.com Tue May 30 15:06:41 2006 From: fxnahashref.com (Xavier Noria) Date: Wed, 31 May 2006 00:06:41 +0200 Subject: [bcn-pm] reunio de juny In-Reply-To: <200605302311.23397.esteve@sindominio.net> References: <200605302311.23397.esteve@sindominio.net> Message-ID: On May 30, 2006, at 23:11, Esteve Fernandez wrote: > El Martes, 30 de Mayo de 2006 21:59, Xavier Noria escribió: >> Hola companyers, nomes dir que a la reunio passada varem quedar que >> la reunio de juny es mou al >> >> dimarts dia 20 >> >> de cara a que en Tim s'hi pugui passar, al Viena de Pelai com es ara >> habitual. De moment no hi ha xerrada prevista. > > Ho vam estar parlant al principi i bé, podria preparar-me una sobre > Lingua::Romana:Perligata (Perl en llatí), per si a algú li interessa. Entesos. Ara he recordat a mes que l'Enrique Nell em va dir fa uns dies per mail que es prepararia una xerrada sobre Unicode pel juny. Si es va parlar a la reunio (vaig arribar mes tard) com a proposta per a coordinar-nos podriem fer la de Lingua::Romana::Perligata aquest mes, i la d'Unicode al juliol, t'aniria be d'aquesta manera Enrique? -- fxn From xdrudisatinet.cat Tue May 30 11:37:29 2006 From: xdrudisatinet.cat (xdrudis) Date: Tue, 30 May 2006 20:37:29 +0200 Subject: [bcn-pm] IPC::Open3 d'un executable que no existeix i gesti d'errors In-Reply-To: <4476CA67.8030104@vesbot.com> References: <4476CA67.8030104@vesbot.com> Message-ID: <20060530183728.GA4116@ideafix.casa.ct> El Fri, May 26, 2006 at 11:29:11AM +0200, Salvador Fandiño deia: > Hola, > > Primero, disculpas por enviar el mensaje como nuevo ;-) por algun > motivo, los mensajes que envio desde mi cuenta de yahoo, que es con la > que estoy subscrito, no llegan a la lista. Alguien tiene idea de por que > puede ser? > > Y ya, a lo que iba, una version reducida del problema: > > use IPC::Open3; > eval { open3("<&STDIN", ">&STDOUT", ">&STDERR", "/foo/bar") }; > print "$$ was here\n"; > > y otro problema similar que no se soluciona sustituyendo la llamada a > croak por exit: > > use IPC::Open3; > END { print "END: $$ was here\n"; } > open3("<&STDIN", ">&STDOUT", ">&STDERR", "/foo/bar"); > > En realidad hay que llamar a POSIX::_exit que sale sin realizar > ningun tipo de "limpieza" o si no se quiere cargar el modulo POSIX > que es bastante pesado, hacer que el proceso hijo se suicide con kill(9, > $$) o con un exec("/bin/false"); > > En fin, Xavi, envias tu el bug report? > Si. L'acabo d'enviar (així aprenc a enviar-ne). He comentat al report que si el pare vol saber l'error encara que el fill no faci croak (que tampoc serviria al pare per saber l'error) crec que pot mirar $?. Potser el pare podria mirar $? al open3 i fer un croak des del pare, no sé. Tampoc sé si això només passa en el meu test o es portable a altres casos,SOs, etc. -- Xavi Drudis Ferran xdrudisatinet.cat From alexmaalexm.org Wed May 31 08:03:49 2006 From: alexmaalexm.org (Alex Muntada) Date: Wed, 31 May 2006 17:03:49 +0200 Subject: [bcn-pm] reunio de juny In-Reply-To: References: <200605302311.23397.esteve@sindominio.net> Message-ID: <20060531150349.GC29263@ac.upc.edu> -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 * Xavier Noria : [2006-05-31 00:06:41 +0200] > Entesos. Ara he recordat a mes que l'Enrique Nell em va dir fa uns > dies per mail que es prepararia una xerrada sobre Unicode pel juny. > Si es va parlar a la reunio (vaig arribar mes tard) com a proposta > per a coordinar-nos podriem fer la de Lingua::Romana::Perligata > aquest mes, i la d'Unicode al juliol, t'aniria be d'aquesta manera > Enrique? Evidentment, l'opinió de l'Enrique ha de comptar més que la meva (que per això és qui va fer la petició) però jo preferiria que la xerrada d'Unicode sigui al juny per dues raons: és molt més interessant (qui de vosaltres no ha tingut problemes amb Unicode després d'actualitzar de Perl 5.6 a 5.8?) i al juliol seré de vacances i m'interessa més no perdre'm el tema d'Unicode. Per tant, proposo que el dimarts 20 parlem d'Unicode amb en Tim. Si algú vol parlar «en» Unicode enlloc de «d'» Unicode encara serà més divertit... ;) /alexm -----BEGIN PGP SIGNATURE----- iD8DBQFEfbA8LdxCGS3zaBERAhY8AJ0esDNjfyVpjVymsvo+MZk/K3ArkACg2rG9 jwu1Y5ki3mMcqanV2/Uzt54= =gqnq -----END PGP SIGNATURE----- From perl_nellatelefonica.net Wed May 31 08:04:17 2006 From: perl_nellatelefonica.net (Enrique Nell) Date: Wed, 31 May 2006 17:04:17 +0200 Subject: [bcn-pm] reunio de juny In-Reply-To: Message-ID: <447CD66200019CED@ctsmtpout1.frontal.correo> (added by postmaster@telefonica.net) Hola No tengo inconveniente en aplazarla (hay mucha tela que cortar en Unicode y posiblemente acabe dividiendo la charla prevista en dos charlas). Además, me parece interesante el módulo de D. Conway sobre el que va a hablar Esteve. Este mes iré a la reunión peti qui peti. Eso sí, posiblemente esté fuera a finales de julio, así que tendría que darla en agosto. Saludos Enrique From esteveasindominio.net Wed May 31 09:01:29 2006 From: esteveasindominio.net (Esteve Fernandez) Date: Wed, 31 May 2006 18:01:29 +0200 Subject: [bcn-pm] reunio de juny In-Reply-To: <20060531150349.GC29263@ac.upc.edu> References: <200605302311.23397.esteve@sindominio.net> <20060531150349.GC29263@ac.upc.edu> Message-ID: <20060531160129.GA22693@sindominio.net> On Wed, May 31, 2006 at 05:03:49PM +0200, Alex Muntada wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > * Xavier Noria : > [2006-05-31 00:06:41 +0200] > > > Entesos. Ara he recordat a mes que l'Enrique Nell em va dir fa uns > > dies per mail que es prepararia una xerrada sobre Unicode pel juny. > > Si es va parlar a la reunio (vaig arribar mes tard) com a proposta > > per a coordinar-nos podriem fer la de Lingua::Romana::Perligata > > aquest mes, i la d'Unicode al juliol, t'aniria be d'aquesta manera > > Enrique? > > Evidentment, l'opinió de l'Enrique ha de comptar més que la meva > (que per això és qui va fer la petició) però jo preferiria que > la xerrada d'Unicode sigui al juny per dues raons: és molt més > interessant (qui de vosaltres no ha tingut problemes amb Unicode > després d'actualitzar de Perl 5.6 a 5.8?) i al juliol seré de > vacances i m'interessa més no perdre'm el tema d'Unicode. Jo no tinc cap problema en posposar o anul.lar la de Perligata. De fet, la idea va sorgir una mica perquè no hi havia més xerrades previstes :P Salutacions.