#!/usr/bin/perl -w use strict; use warnings; use CGI qw(:standard escapeHTML); use JSON; use utf8; binmode(STDOUT, ":utf8"); my $query = param('query') || ''; \( query =~ s/^\s+|\s+ \)//g; # Обрізати пробіли # Валідація (посилена безпека) if (!$query || length($query) < 3 || length($query) > 100 || $query =~ /[^\w\s]/) { print header(-charset => 'UTF-8'); print start_html(-title => 'Пошук'); print "

Недійсний запит: мінімум 3 символи, тільки букви та пробіли.

"; print end_html(); exit; } my $index_file = '/path/to/search_index.json'; # Той самий шлях # Читати JSON open(my $json_fh, '<:utf8', $index_file) or die "Не можу прочитати індекс: $!"; local $/; my $json_text = <$json_fh>; close($json_fh); my $index = decode_json($json_text); print header(-charset => 'UTF-8'); print start_html(-title => "Результати пошуку за '$query'"); print "

Результати за запитом '" . escapeHTML($query) . "':

\n" . (@sorted_paths ? "" : "

Нічого не знайдено.

"); print end_html();