• # rand($.) < 1 && ($line = $_) while <>

    Posté par (courriel, site web personnel) . En réponse au message Accès aléatoire à un fichier d'un répertoire. Évalué à 3.

    En Perl quand on veut prendre un élément aléatoire d'une liste dont on ne connait a priori pas la taille, on fait comme ça:
    rand($.) < 1 && ($line = $_) while <>;
    (ça vient de la FAQ qui dit que ça vient du Camel Book) En C ça donnerait un truc dans ce genre là:
    i = 1; while (file = next_file()) { if (rand(i) < 1) result = file; i++; }
    Avec rand(x) qui retourne un nombre aléatoire strictement compris entre 0 et 1 et next_file() qui retourne le fichier suivant (en allant fouiller récursivement) ou 0 si c'était le dernier. Il y a surement moyen de faire plus rapide si on sait à l'avance à quoi ressemble le répertoire en utilisant un fichier d'index ou quelque chose comme ça et ça éviterait les "race conditions". Pour ça je pense que tu pourrais t'inspirer des programmes fortune et strfile. PS: c'est embétant de pas avoir droit à la balise <br>.

    pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.