Пожалуйста, посмотрите, выполняет ли следующий фрагмент кода то, что вы ищете
Примечание: хотя JSON вообще не задействовано - данные хранятся в ха sh
use strict;
use warnings;
use feature 'say';
use utf8;
use Data::Dumper;
binmode STDOUT, ':utf8';
my @wifi;
my @fields = split ' ', <DATA>;
while( <DATA> ) {
my %hash;
my @array = unpack('A8A20A7A6A12A8A6A8',$_);
push @wifi, \%hash;
}
say Dumper(\@wifi);
__DATA__
IN-USE SSID MODE CHAN RATE SIGNAL BARS SECURITY
* WLAN-123 Infra 11 130 Mbit/s 60 ▂▄▆_ WPA2
FRITZ!Box 7430 JW Infra 1 195 Mbit/s 57 ▂▄▆_ WPA2
Telekom_FON Infra 11 130 Mbit/s 47 ▂▄__ --
WLAN-123ABC Infra 6 270 Mbit/s 32 ▂▄__ WPA2
WiFi-Repeater Infra 1 135 Mbit/s 24 ▂___ WPA2
Вывод
$VAR1 = [
{
'RATE' => '130 Mbit/s',
'SSID' => 'WLAN-123',
'BARS' => "\x{2582}\x{2584}\x{2586}_",
'CHAN' => '11',
'MODE' => 'Infra',
'SIGNAL' => '60',
'SECURITY' => 'WPA2',
'IN-USE' => '*'
},
{
'CHAN' => '1',
'MODE' => 'Infra',
'BARS' => "\x{2582}\x{2584}\x{2586}_",
'RATE' => '195 Mbit/s',
'SSID' => 'FRITZ!Box 7430 JW',
'IN-USE' => '',
'SECURITY' => 'WPA2',
'SIGNAL' => '57'
},
{
'RATE' => '130 Mbit/s',
'SSID' => 'Telekom_FON',
'BARS' => "\x{2582}\x{2584}__",
'MODE' => 'Infra',
'CHAN' => '11',
'IN-USE' => '',
'SIGNAL' => '47',
'SECURITY' => '--'
},
{
'CHAN' => '6',
'MODE' => 'Infra',
'RATE' => '270 Mbit/s',
'SSID' => 'WLAN-123ABC',
'BARS' => "\x{2582}\x{2584}__",
'IN-USE' => '',
'SECURITY' => 'WPA2',
'SIGNAL' => '32'
},
{
'SIGNAL' => '24',
'SECURITY' => 'WPA2',
'IN-USE' => '',
'BARS' => "\x{2582}___",
'RATE' => '135 Mbit/s',
'SSID' => 'WiFi-Repeater',
'MODE' => 'Infra',
'CHAN' => '1'
}
];