X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=pod%2Fperlfaq4.pod;h=ecbd65243e5ff28a3966b50bc16c180cb0e5be43;hb=40b568c93a31cb8feae8a14551365dff7e76b624;hp=838f753fa6ae2d0f6999708bdee91eee93d1745b;hpb=072dc14b1a4177db68f19d2de42f2c1f889c4048;p=p5sagit%2Fp5-mst-13.2.git diff --git a/pod/perlfaq4.pod b/pod/perlfaq4.pod index 838f753..ecbd652 100644 --- a/pod/perlfaq4.pod +++ b/pod/perlfaq4.pod @@ -282,8 +282,8 @@ and Date::Manip modules from CPAN. =head2 How can I find the Julian Day? -You could use Date::Calc's Delta_Days function and calculate the number -of days from there. Assuming that's what you really want, that is. +Use the Time::JulianDay module (part of the Time-modules bundle +available from CPAN.) Before you immerse yourself too deeply in this, be sure to verify that it is the I Day you really want. Are they really just interested in @@ -301,9 +301,6 @@ world and 1980 in the MS-DOS/Windows world. If you find that it is not the first meaning that you really want, then check out the Date::Manip and Date::Calc modules. (Thanks to David Cassell for most of this text.) -There is also an example of Julian date calculation that should help you in -http://www.perl.com/CPAN/authors/David_Muir_Sharnoff/modules/Time/JulianDay.pm.gz - =head2 How do I find yesterday's date? The C function returns the current time in seconds since the @@ -447,11 +444,9 @@ nested patterns, nor can they. For that you'll have to write a parser. If you are serious about writing a parser, there are a number of -modules or oddities that will make your life a lot easier. There is -the CPAN module Parse::RecDescent, the standard module Text::Balanced, -the byacc program, the CPAN module Parse::Yapp, and Mark-Jason -Dominus's excellent I tool at http://www.plover.com/%7Emjd/perl/py/ -. +modules or oddities that will make your life a lot easier. There are +the CPAN modules Parse::RecDescent, Parse::Yapp, and Text::Balanced; +and the byacc program. One simple destructive, inside-out approach that you might try is to pull out the smallest nesting parts one at a time: @@ -468,7 +463,7 @@ really does work: # $_ contains the string to parse # BEGIN and END are the opening and closing markers for the # nested text. - + @( = ('(',''); @) = (')',''); ($re=$_)=~s/((BEGIN)|(END)|.)/$)[!$3]\Q$1\E$([!$2]/gs; @@ -824,7 +819,7 @@ Stringification also destroys arrays. print "@lines"; # WRONG - extra blanks print @lines; # right -=head2 Why don't my EEHERE documents work? +=head2 Why don't my < flag will warn you about these matters. +The C pragma and the B<-w> flag will warn you about these +matters. =head2 How can I remove duplicate elements from a list or array? @@ -1073,7 +1069,7 @@ strings. Modify if you have other needs. sub compare_arrays { my ($first, $second) = @_; - local $^W = 0; # silence spurious -w undef complaints + no warnings; # silence spurious -w undef complaints return 0 unless @$first == @$second; for (my $i = 0; $i < @$first; $i++) { return 0 if $first->[$i] ne $second->[$i]; @@ -1285,7 +1281,7 @@ Supply a comparison function to sort() (described in L): @list = sort { $a <=> $b } @list; The default sort function is cmp, string comparison, which would -sort C<(1, 2, 10)> into C<(1, 10, 2)>. C=E>, used above, is +sort C<(1, 2, 10)> into C<(1, 10, 2)>. C<< <=> >>, used above, is the numerical comparison operator. If you have a complicated function needed to pull out the part you @@ -1748,11 +1744,10 @@ if you just want to say, ``Is this a float?'' sub is_numeric { defined getnum($_[0]) } -Or you could check out -http://www.perl.com/CPAN/modules/by-module/String/String-Scanf-1.1.tar.gz -instead. The POSIX module (part of the standard Perl distribution) -provides the C and C for converting strings to double -and longs, respectively. +Or you could check out the String::Scanf module on CPAN instead. The +POSIX module (part of the standard Perl distribution) provides the +C and C for converting strings to double and longs, +respectively. =head2 How do I keep persistent data across program calls?