У меня есть следующий perl скрипт из этого вопроса об обмене стека, который преобразует содержимое каталога в JSON.
use File::Find;
use JSON;
use strict;
use warnings;
my $dirs={};
my $encoder = JSON->new->ascii->pretty;
find({wanted => \&process_dir, no_chdir => 1 }, ".");
print $encoder->encode($dirs);
sub process_dir {
return if !-d $File::Find::name;
my $ref=\%$dirs;
for(split(/\//, $File::Find::name)) {
$ref->{$_} = {}
if(!exists $ref->{$_});
$ref = $ref->{$_};
}
}
Я запускаю скрипт с использованием Termux на Android 6.0.
Рассмотрим следующий каталог:
.
|--server .
| | - File 1.tmp
| | - File 2.sql
| | - File 3.sql
|-- js .
| | - File 1.js
| | - File 2.js
| | - File 3.js
| -css .
| | - File 1.js
| | - File 2.js
| | - File 3.js
| -assets .
| | - Font-awesome
| | .
| | | - webfont.
| | | | - File 2.woff
| | | | - File 2.woff
| | | | - File 3.woff
| | | - css .
| | | | - File 2.css
| | | | - File 2.css
| | | | - File 3.css
| | - Fonts
| | | - ps .
| | | | - File 2.woff
| | | | - File 2.css
| | | | - File 3.txt
| | - images
| | | - File 1.png
| | | - File 2.png
| | | - File 3.svg
Сценарий возвращает следующее, если я запустите его в указанном выше каталоге:
{
"." : {
"server" : {},
"js" : {},
"css" : {},
"assets" : {
"fonts" : {
"ps":{}
},
"images" : {},
"font-awesome" : {
"css" :{},
"webfonts" : {}
}
}
}
}
Я пытаюсь отредактировать скрипт, чтобы дополнительно включить файлы в каждом подкаталоге в виде массива Js (если это возможно, используя perl + JSON Модуль, или просто Perl)
Например [Редактировать]
{
"." : {
"server" : {"Files": ["File1", "File2", "File n"]},
/* Or just "server" : ["File1", "File2", "File n"], ... */
"js" : {"Files": ["File1", "File2", "File n"]},
"assets" : {
"fonts" : {
"ps":{"Files": ["File1", "File2", "File n"]}
},
"images" : {"Files": ["File1", "File2", "File n"]},
"font-awesome" : {
"css" : {"Files": ["File1", "File2", "File n"]}
"webfonts" : {"Files": ["File1", "File2", "File n"]}
}
}
}
}
Это достижимо? Если так, как я должен go об этом? Я относительно новичок в perl, и мне трудно обдумать это.