sub process_modules { my ($active_modules_ref) = @_; # Accept %active_modules as a reference my %module_map = ( 'clouds' => sub { CloudUpdate::cloud_update() }, 'volcanoes' => sub { VolcanoXML::process_volcano_data() }, 'storms' => sub { Storm::fetch_and_process_storms() }, 'quakes' => sub { Earthquake::get_quakedata() }, 'norad' => sub { my $satellite_file = "$xplanet_satellites_dir\\Norad"; my $output_tle_file = "$xplanet_satellites_dir\\Norad.tle"; my $marker_file = "$xplanet_satellites_dir\\Norad_marker.txt"; Norad::process_satellites($satellite_file, $output_tle_file, $marker_file); }, 'fires' => sub { Fires::run() }, 'labelupdate' => sub { print "process_modules - Debug: Calling WriteoutLabel with active_modules_ref:\n" if $DEBUG; foreach my $key (keys %$active_modules_ref) { print " $key => $active_modules_ref->{$key}\n" if $DEBUG; } Label::WriteoutLabel($active_modules_ref); # Pass as a reference }, ); foreach my $module (keys %Globals::modules) { my ($onoff_key) = grep { /onoff$/i } keys %{ $Globals::modules{$module} }; if ($onoff_key && $Globals::modules{$module}{$onoff_key} == 1) { print "Processing module: $module\n" if $DEBUG; if (exists $module_map{$module}) { $module_map{$module}->($active_modules_ref); } else { warn "No subroutine mapped for module: $module\n" if $DEBUG; } } else { print "Module: $module, On/Off: Undefined or Inactive\n" if $DEBUG; } } } #### 'labelupdate' => sub { print "process_modules - Debug: Calling WriteoutLabel with active_modules_ref:\n" if $DEBUG; foreach my $key (keys %$active_modules_ref) { print " $key => $active_modules_ref->{$key}\n" if $DEBUG; } Label::WriteoutLabel($active_modules_ref); # Pass as a reference #### # Process modules process_modules(\%active_modules); #### package Label; use strict; use warnings; use Data::Dumper; use Time::Local; # Load the Time::Local module use Globals qw( $DEBUG $label_file $labelsettings ); sub WriteoutLabel { print "Label line 31 - Debug: \$DEBUG is " . ($DEBUG ? "enabled" : "disabled") . "\n"; my ($active_modules_ref) = @_; # Skip label generation if labelsdisplay is disabled my $labels_display = $Globals::modules{'labels'}{'labelsonoff'} // 1; # Default to 1 (enabled) return unless $labels_display; print "Label line 39 - Debug: Labels display is " . ($labels_display ? "enabled" : "disabled") . "\n" if $DEBUG; # Debug: Check that active_modules_ref is a hash reference unless (ref $active_modules_ref eq 'HASH') { print "Label::WriteoutLabel - Received invalid active_modules_ref: " . (ref $active_modules_ref || 'undefined') . "\n" if $DEBUG; die "Error: active_modules_ref is not a HASH reference."; } ...