Cum scrii cod perl care:
- ia ca parametru un array de indecsi
- merge intr-un alt array si ia stringurile de la acei indecsi
- merge intr-o tabela de dispersie, si foloseste fiecare din stringurile de mai sus pe post de chei ca sa extraga o structura cu informatii
- in structura aia gaseste un camp care e un array de nume de fisiere, le concateneaza pentru fiecare cheie din cele de mai sus, ca sa obtii o lista lunga cu nume de fisiere
- elimina duplicatele din lista de nume de fisiere
- sterge fisierele cu pricina
?
Simplu, pe 2 randuri!
push (@files, @{$r{$r[$_]}->{files}}) foreach (@idxs);
unlink grep(!$s{$_}++, @files);
Gizas!!! Nu, nu mi-a defilat pisica pe tastatura. Codul functioneaza.
Bonus: sunt doua variabile distincte numite r, un array si un hash. Si cand spun @{$r{$r[… asa-i ca incepe sa devina derutant?
Pentru carcotasi: langa codul asta am scris si versiunea “alungita”, ca sa pot sa inteleg si peste 6 luni ce am facut. Si sa inteleaga si altii. Dar am comentat-o. Ca asta era prea cool.
Bonus 2: cine reuseste sa o scrie pe o singura linie, adica sa fie nevoie de un singur “;”, primeste o sticla de ce vrea el/ea de baut :)