diff --git a/package/gluon-simple-tc/initial.pl b/package/gluon-simple-tc/initial.pl
index 820029f757a2441997d2dfc1f01dea77ba66f766..fdffdc8494cdde0e0cd16b225278249dffc26404 100644
--- a/package/gluon-simple-tc/initial.pl
+++ b/package/gluon-simple-tc/initial.pl
@@ -6,10 +6,12 @@ print <<'END';
 uci -q batch <<EOF
 END
 
-while (($name, $interface) = each %{$cfg}) {
+foreach my $name (sort keys %{$cfg}) {
+  my $interface = $cfg->{$name};
+
   print "set gluon-simple-tc.$name=interface\n";
 
-  for (qw(ifname enabled limit_egress limit_ingress)) {
+  for (qw(enabled ifname limit_egress limit_ingress)) {
     print "set gluon-simple-tc.$name.$_=$interface->{$_}\n";
   }
 }