From 9d8ed1784fae4b21592db6fb2d5e82446fa31b49 Mon Sep 17 00:00:00 2001
From: "hieda_kyuko@hpr" <ugo58956@protonmail.com>
Date: Mon, 12 May 2025 11:22:12 +0200
Subject: [PATCH] References all the way

---
 lib/App/Frame.pm       | 12 ++++++------
 lib/App/FrameUtils.pm  | 32 ++++++++++++++++----------------
 lib/App/MasterUtils.pm | 28 ++++++++++++++--------------
 3 files changed, 36 insertions(+), 36 deletions(-)

diff --git a/lib/App/Frame.pm b/lib/App/Frame.pm
index de9a8c0..6616ff2 100644
--- a/lib/App/Frame.pm
+++ b/lib/App/Frame.pm
@@ -13,12 +13,12 @@ sub debug_frame
 
 sub frame_info
 {
-    my %frame = %{ $_[0] };
-    print "Frame for line $frame{'rosenmei'}:\n";
-    print ". $frame{'eki_num'} stations\n";
-    print ". " . scalar @{ $frame{'syubetsu'} } . " service types\n";
-    print ". " . scalar @{ $frame{'dia'}{'kudari'} } . " down services\n";
-    print ". " . scalar @{ $frame{'dia'}{'nobori'} } . " up services\n";
+    my $frame = $_[0];
+    print "Frame for line $frame->{'rosenmei'}:\n";
+    print ". $frame->{'eki_num'} stations\n";
+    print ". " . scalar @{ $frame->{'syubetsu'} } . " service types\n";
+    print ". " . scalar @{ $frame->{'dia'}->{'kudari'} } . " down services\n";
+    print ". " . scalar @{ $frame->{'dia'}->{'nobori'} } . " up services\n";
 }
 
 1;
diff --git a/lib/App/FrameUtils.pm b/lib/App/FrameUtils.pm
index 3915dde..7bbc620 100644
--- a/lib/App/FrameUtils.pm
+++ b/lib/App/FrameUtils.pm
@@ -14,26 +14,26 @@ use App::MasterUtils;
 
 sub get_syubetsu
 {
-    my %frame = %{ $_[0] };
+    my $master = $_[0];
     my $rosen_id = $_[1];
     my $index = $_[2];
 
-    my $rosen = MasterUtils::get_rosen_frame \%frame, $rosen_id;
+    my $rosen = MasterUtils::get_rosen_frame $master, $rosen_id;
     my @syubetsus = @{ $rosen->{'syubetsu'} };
     if ($index >= scalar @syubetsus) { die "Index error"; }
-    return %{ $syubetsus[$index] }{'name'};
+    return $syubetsus[$index]->{'name'};
 }
 
 sub get_destination
 {
-    my %frame = %{ $_[0] };
+    my $master = $_[0];
     my $rosen_id = $_[1];
-    my $rosen = MasterUtils::get_rosen_frame \%frame, $rosen_id;
+    my $rosen = MasterUtils::get_rosen_frame $master, $rosen_id;
     my @jikoku = @{ $_[2] };
     my $offset = $_[3];
     my $is_down = $_[4];
 
-    return (MasterUtils::sta_from_index \%frame, $rosen_id, $is_down
+    return (MasterUtils::sta_from_index $master, $rosen_id, $is_down
 	    ? scalar $offset + @jikoku - 1
 	    : $rosen->{'eki_num'} - $offset - @jikoku)
 	->{'ekimei'};
@@ -41,20 +41,20 @@ sub get_destination
 
 sub hassya_hyou
 {
-    my %frame = %{ $_[0] };
+    my $master = $_[0];
     my $eki = $_[1];
 
-    my @rosens = MasterUtils::get_routes \%frame, $eki;
+    my @rosens = MasterUtils::get_routes $master, $eki;
 
-    my %sta_info = %{ MasterUtils::sta_from_id \%frame, $eki };
+    my %sta_info = %{ MasterUtils::sta_from_id $master, $eki };
 
     sub process_ressya_list
     {
 	my $rosen_id = $_[0];
-	my $rosen = MasterUtils::get_rosen_frame \%frame, $rosen_id;
+	my $rosen = MasterUtils::get_rosen_frame $master, $rosen_id;
 	my @ressyas = @{ $_[1] };
 	my $is_down = $_[3];
-	my $target_absolute = MasterUtils::get_eki_position \%frame, $rosen_id, $_[2];
+	my $target_absolute = MasterUtils::get_eki_position $master, $rosen_id, $_[2];
 	my $target_relative = $is_down
 	    ? $target_absolute
 	    : $rosen->{'eki_num'} - $target_absolute - 1;
@@ -72,12 +72,12 @@ sub hassya_hyou
 	    # Timestamp has no dep time (only arrival time for ex)
 	    if (!defined $time) { next; }
 	    # This service does not stop here
-	    if (%ts{'mode'} != 1) { next; }
+	    if ($ts{'mode'} != 1) { next; }
 	    # Format: time (tab) destination (tab) type (with eventual name)
-	    my $syubetsu = get_syubetsu \%frame, $rosen_id, $data{'syubetsu'};
+	    my $syubetsu = get_syubetsu $master, $rosen_id, $data{'syubetsu'};
 	    print ((Utils::format_time $time)
 		   . "\tfor "
-		   . (get_destination \%frame, $rosen_id, \@jikoku, $target_relative, $is_down)
+		   . (get_destination $master, $rosen_id, \@jikoku, $target_relative, $is_down)
 		   . "\t$syubetsu")
 		;
 	    if (defined $data{'meisyo'})
@@ -91,10 +91,10 @@ sub hassya_hyou
 
     foreach my $rosen_id (@rosens)
     {
-	my $rosenmei = MasterUtils::get_rosenmei \%frame, $rosen_id;
+	my $rosenmei = MasterUtils::get_rosenmei $master, $rosen_id;
 	print "$rosenmei timetable for station $sta_info{'ekimei'}\n";
 
-	my $dia = $frame{'rosen'}->{$rosen_id}->{'dia'};
+	my $dia = $master->{'rosen'}->{$rosen_id}->{'dia'};
 
 	print "=================== Down ===================\n";
 	process_ressya_list $rosen_id, $dia->{'kudari'}, $eki, 1;
diff --git a/lib/App/MasterUtils.pm b/lib/App/MasterUtils.pm
index 45b93df..58df7c7 100644
--- a/lib/App/MasterUtils.pm
+++ b/lib/App/MasterUtils.pm
@@ -15,12 +15,12 @@ use Data::Printer;
 
 sub sta_from_id
 {
-    my %master = %{ $_[0] };
+    my $master = $_[0];
     my $id = $_[1];
     if (!defined $id) { Log::e 'Please specify a station id.'; }
-    foreach my $k (keys %{ $master{'eki_index'} })
+    foreach my $k (keys %{ $master->{'eki_index'} })
     {
-	my $v = $master{'eki_index'}->{$k};
+	my $v = $master->{'eki_index'}->{$k};
 	if ($k eq $id) { return $v };
     }
     Log::e "Station id $id not found.";
@@ -33,12 +33,12 @@ sub get_ekimei
 
 sub get_rosen_frame
 {
-    my %master = %{ $_[0] };
+    my $master = $_[0];
     my $rosen_id = $_[1];
     if (!defined $rosen_id) { Log::e 'Please specify a route id.'; }
-    foreach my $rosen (keys %{ $master{'rosen'} })
+    foreach my $rosen (keys %{ $master->{'rosen'} })
     {
-	if ($rosen eq $rosen_id) { return $master{'rosen'}->{$rosen}; }
+	if ($rosen eq $rosen_id) { return $master->{'rosen'}->{$rosen}; }
     }
     Log::e "Route id $rosen_id not found.";
 }
@@ -50,10 +50,10 @@ sub get_rosenmei
 
 sub get_eki_position
 {
-    my %master = %{ $_[0] };
+    my $master = $_[0];
     my $rosen_id = $_[1];
     my $id = $_[2];
-    my $rosen = get_rosen_frame \%master, $rosen_id;
+    my $rosen = get_rosen_frame $master, $rosen_id;
     my @ekis = @{ $rosen->{'eki'} };
 
     return first { $ekis[$_] eq $id } 0..$#ekis;
@@ -61,26 +61,26 @@ sub get_eki_position
 
 sub sta_from_index
 {
-    my %master = %{ $_[0] };
+    my $master = $_[0];
     my $rosen_id = $_[1];
     my $index = $_[2];
     if (!defined $rosen_id) { Log::e 'Please specify a route id.'; }
     if (!defined $index) { Log::e 'Please specify a station index.'; }
 
-    my $rosen = get_rosen_frame \%master, $rosen_id;
-    return sta_from_id \%master, @{ $rosen->{'eki'} }[$index];
+    my $rosen = get_rosen_frame $master, $rosen_id;
+    return sta_from_id $master, @{ $rosen->{'eki'} }[$index];
 }
 
 sub get_routes
 {
-    my %master = %{ $_[0] };
+    my $master = $_[0];
     my $id = $_[1];
     my @res;
     
     if (!defined $id) { Log::e 'Please specify a station id to get its routes.'; }
-    my $eki_ref = sta_from_id \%master, $id;
+    my $eki_ref = sta_from_id $master, $id;
 
-    my %rosens = %{ $master{'rosen'} };
+    my %rosens = %{ $master->{'rosen'} };
     foreach my $k (keys %rosens)
     {
 	my @ekis = @{ $rosens{$k}->{'eki'} };
-- 
GitLab