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 :)

On 5 Mar 2009 ·
Tagged with:
 

Comments are closed.