If I have, say the de_DE.UTF-8 locale installed, and run the code below with LC_ALL=de_DE.UTF-8 perl gtk3_application_json.pl then when it exits, the following (illegal - decimal comma) JSON is printed: { "real_number" : 0,05 } If I change the "use Gtk3" line to "use Gtk3 -init", then the correct - decimal point JSON is printed: { "real_number" : 0.05 } What is going on? Regards Jeff #!/usr/bin/perl package MyApp; BEGIN { use Glib::Object::Introspection; Glib::Object::Introspection->setup( basename => 'Gio', version => '2.0', package => 'Glib::IO'); } use strict; use warnings; use JSON::PP; use Gtk3; use Glib qw/TRUE FALSE/; use Glib::Object::Subclass qw/Gtk3::Application/; sub STARTUP { my ($app) = @_; print "in startup\n"; return $app->SUPER::STARTUP (); } sub ACTIVATE { my ($app) = @_; print "in activate\n"; my $window = Gtk3::ApplicationWindow->new ($app); $window->set_title ('Welcome to GNOME'); $window->set_default_size (200, 200); $window->signal_connect ('delete_event' => sub {$app->quit()}); $window->show_all (); return $app->SUPER::ACTIVATE (); } sub OPEN { my ($app, $files, $nfiles, $arg3) = @_; print "in open\n"; use Data::Dumper; print Dumper($files, $nfiles, $arg3); for my $file (@$files) { print $file->get_basename(), "\n"; } } sub SHUTDOWN { my ($app) = @_; print "in shutdown\n"; my %hashref = ( real_number => 0.05 ); my $conf = JSON::PP->new->ascii; $conf = $conf->pretty->allow_nonref; $conf = $conf->canonical; print $conf->encode(\%hashref); return $app->SUPER::SHUTDOWN (); } package main; my $app = MyApp->new( application_id => 'app.test', flags => 'handles-open'); exit $app->run([$0, @ARGV]);
Attachment:
signature.asc
Description: OpenPGP digital signature