Astro-Constants
view release on metacpan - search on metacpan
view release on metacpan or search on metacpan
script/update_constant_values.pl view on Meta::CPAN
#!/usr/bin/perl -w
#
# Checks the online sources for the values of the constants
# Boyd Duffee, Mar 2020
#
# hard coded to run from top directory and uses only data/PhysicalConstants.xml
use strict;
use autodie;
use Modern::Perl;
use XML::LibXML;
use LWP::Simple;
use List::Util qw/shuffle/;
use HTML::Parser;
#die "Usage: $0 infile outfile" unless @ARGV == 1;
my $TESTING = 0;
my $ONLINE = 1;
my $SLEEP = 0;
my ($n, @values_parsed, @uncertainties_parsed, );
my ($td_flag, $font_flag, $text_flag, $uncertainty_flag) = 0;
my $xml = XML::LibXML->load_xml(location => 'data/PhysicalConstants.xml');
my $nist_parser = HTML::Parser->new(
start_h => [\&start_nist, "self, tagname, attr"],
end_h => [\&end_nist, "tagname, attr"],
text_h => [\&text, "text"],
);
configure_parsers();
for my $constant ( $xml->getElementsByTagName('PhysicalConstant') ) {
my ($long_name, $old_value, ) = undef;
for my $name ( $constant->getChildrenByTagName('name') ) {
$long_name = $name->textContent() if $name->getAttribute('type') eq 'long';
}
my $description = $constant->getChildrenByTagName('description')->shift()->textContent();
for my $value ( $constant->getChildrenByTagName('value') ) {
if ( $value->hasAttribute('system') ) {
$old_value = $value->textContent() if $value->getAttribute('system') eq 'MKS';
}
else {
$old_value = $value->textContent();
next;
}
$old_value =~ tr/_//;
}
my $precision = $constant->getChildrenByTagName('uncertainty')->shift();
my $precision_type = $precision->getAttribute('type');
$precision = $precision->textContent();
my $source = $constant->getChildrenByTagName('source')->shift();
my $source_url = $source->getAttribute('url');
say <<CONST;
$long_name\t$old_value\t$precision\t$precision_type
$description
$source_url
CONST
#next unless $source_url =~ /physics\.nist\.gov/;
next if $source_url =~ /wikipedia|jupiterfact/;
print "Fetch page? [Ynq] ";
my $ans = <STDIN>;
next if $ans =~ /n/i;
last if $ans =~ /q/i;
view all matches for this distributionview release on metacpan - search on metacpan
( run in 1.364 second using v1.00-cache-2.02-grep-82fe00e-cpan-d29e8ade9f55 )