Perl Noob?! Fragen!?

  • Hi zusammen!


    Also ich habe ein paar Fragen zu Perl:


    Ich versuche es mir gerade selber beizubringen (zumindest das was ich für mein Projekt meine zu brauchen) aber bin ins stocken geraten.


    Also:
    Ich habe eine Datei "test" in dieser Datei sind x Zeilen.
    Wie bekomme ich folgendes hin:
    Vergleich 1. Zeile mit allen Zeilen der Datei Log
    Wenn nicht Identisch:
    Auslesen der 1 Zeile
    Umbennen einer Datei von Test_0.mp3 nach Inhalt.mp3 von Zeile 1 der test Datei.
    Wenn eine weitere Zeile vorhanden, das ganze von vorn
    Wenn eine Zeile Identisch ist soll sich die Zeilennummer gemerkt werden und die Entsprechende Datei Test_x.mp3 gelöscht werden
    Anschliesend alle Zeilen von Test an Datei Log anhängen.


    Und:
    Verschieben von allen Dateien die nicht Test_x.mp3 sind in ein Belibiges Verzeichniss.


    Ich weiss das es Total chaotisch ist aber ich habe erst heute angefangen es zu lernen und jeder hat mal klein angefangen, also bitte nicht schimpfen!
    Hier der Quellcode mit dem ich rumgetestet habe:



    Vielen Dank


    Christian

    Sys:
    TT-FF-S 1.5(4MB-Mod) incl. CI,Nova S-Plus , Asus P4-R800-V Deluxe
    Soft:
    EasyVDR 0.4

  • moin


    für solche vergleiche von 2 dateien bieten sich ineinander gestecke foreach loops an


    p5n7a-vm - debian lenny - vdr 1.7.9 - plugins: live, text2skin, epgsearch, xineliboutput cvs, streamdev-server - 2x tt s2-3200 - xine-vdpau 284 + df v9 patches - output vdr-sxfe
    p5n7a-vm - debian lenny - vdr 1.7.9 - plugins: text2skin, xineliboutput cvs, streamdev-client - xine-vdpau 284 + df v9 patches - output vdr-sxfe

  • Hi dunar!


    Vielen Dank für deine Hilfe! Bin jetzt schon mal um einiges weiter.
    Stecke aber wieder fest hier das wie ichs bis jetzt habe:
    Habe Hauptsächlich im Letzten Teil Änderungen vorgenommen.




    Vielen Dank


    Christian

    Sys:
    TT-FF-S 1.5(4MB-Mod) incl. CI,Nova S-Plus , Asus P4-R800-V Deluxe
    Soft:
    EasyVDR 0.4

  • Wenn diese Zeile das Problem ist:

    Code
    #rename ("Test.mp3",$LogFileContentLine.".mp3")


    Du meinst das hier?

    Code
    rename( "Test.mp3", 'xxx_'. ( $LogFileContentLine-1 ) .'.mp3' );


    Ich würde die Zahl dann noch auf 4 Stellen vorne mit Nuller auffüllen, der Art:

    Code
    rename( "Test.mp3", sprintf( "xxx_%04d.mp3", ( $LogFileContentLine-1 ) ) );


    Oder an welchem Problem hängst Du?


    Gruß,
    Martin

  • Achja, das:


    Code
    foreach (@DBFileContent)
            {
                    $found = 1 if (/$LogFileContentLine/);
            } #foreach (@DBFileContent)


    geht auch einfacher:

    Code
    $found = grep( /$LogFileContentLine/, @DBFileContent );


    Gruß, Martin

  • Hi Martin,


    Das hier:


    #rename ("Test.mp3",$LogFileContentLine.".mp3")


    rename( "Test.mp3", 'xxx_'. ( $LogFileContentLine-1 ) .'.mp3' );


    soll eigendlich sowas wie:


    rename ( scheissegal_$lineCounter-1.'.mp3' , $LogFileContentLine.'.mp3');


    werden sprich:


    xx_0.mp3 nach InhaltZeile1.mp3


    wobei xx nicht von Intresse ist nur das :
    _0 und _1 usw.
    Aber die 0 ist gleich Zeile 1 der Log Datei usw.


    Vielen Dank!


    Christian

    Sys:
    TT-FF-S 1.5(4MB-Mod) incl. CI,Nova S-Plus , Asus P4-R800-V Deluxe
    Soft:
    EasyVDR 0.4

  • setzte das $lineCounter++; halt ans ende der while schleife, wusste beim erstellen des beispieles nicht ob du damit vertraut bist bei zählen mit 0 anzufangen


    den zweiten foreach hab ich absichtlich so eingebaut um die idee dahinter zu zeigen, grep ist natürlich etwas einfacher


    zum rename ...


    kennst du das "scheissegal_" bzw ist es immer gleich?

    p5n7a-vm - debian lenny - vdr 1.7.9 - plugins: live, text2skin, epgsearch, xineliboutput cvs, streamdev-server - 2x tt s2-3200 - xine-vdpau 284 + df v9 patches - output vdr-sxfe
    p5n7a-vm - debian lenny - vdr 1.7.9 - plugins: text2skin, xineliboutput cvs, streamdev-client - xine-vdpau 284 + df v9 patches - output vdr-sxfe

  • Hi dunar!


    Vielen Dank das Du es so ausführlich machst! Genau das brauch ich ja!
    Habe ja erst gerade damit angefangen Perl zu scripten und somit sehr wenig Erfahrung!


    $lineCounter++ hab ich an den Schluss gesetz klappt auch prima!


    zum rename:


    Jein es wird wahrscheinlich meist so heissen:
    Get_the_Clip_1-1.mp3
    Get_the_Clip_2-1.mp3
    Get_the_Clip_3-1.mp3


    Wobei ich noch testen muss was bei einer weiteren Aufnahme passiert.



    Habe aber das nächste Prob *g*
    wie bekomme ich das hier:


    in meine Log Datei geschrieben? Und am besten noch nur einen Bestimmten Teil!


    So sieht die Ausgabe aus:
    d G111 VIVA PLUS 10.01. 17:58:00


















    =056ij`j max herre mit joy denalane
    %"%)&*&. 1ste liebe


    =05w!)8!#7! Vote für den nächsten
    %"%-$&"$ % Clip TXT S.311


    Ich benötige aber nur das rot markierte.
    Wobei dies sich natürlich immer ändern wird.


    So jetzt aber wieder weiter Testen und vor allem LERNEN *g*


    Vielen Dank


    Christian

    Sys:
    TT-FF-S 1.5(4MB-Mod) incl. CI,Nova S-Plus , Asus P4-R800-V Deluxe
    Soft:
    EasyVDR 0.4

  • Hi zusammen,


    Also:
    Die Dateien heissen auch anders:


    @Get_The_Clip_Interaktive_Chartclipshow_1-1.mp3
    @Get_The_Clip_Interaktive_Chartclipshow_2-1.mp3
    @Get_The_Clip_Interaktive_Chartclipshow_3-1.mp3
    usw.
    Das was Gleich bleibt ist dieser Teil
    x-1.mp3


    wobei x immer der $lineCounter entsprechen soll.


    Vielen Dank


    Christian

    Sys:
    TT-FF-S 1.5(4MB-Mod) incl. CI,Nova S-Plus , Asus P4-R800-V Deluxe
    Soft:
    EasyVDR 0.4

  • dachte mir zwar das es in die richtung geht aber nun weiss ich was du vorhast ;)


    mal eine frage am rande: wie sieht den der videotext mit den clips aus? steht da eine historie oder überschreiben die die gleiche seite immer?


    und hättest du mal eine solche seite für mich? (main vdr liegt in stücken vor mir und den bastelvdr hat sich der waf gekrallt)

    p5n7a-vm - debian lenny - vdr 1.7.9 - plugins: live, text2skin, epgsearch, xineliboutput cvs, streamdev-server - 2x tt s2-3200 - xine-vdpau 284 + df v9 patches - output vdr-sxfe
    p5n7a-vm - debian lenny - vdr 1.7.9 - plugins: text2skin, xineliboutput cvs, streamdev-client - xine-vdpau 284 + df v9 patches - output vdr-sxfe

  • Hast mich also durschaut ja :D
    klar hab ich das.
    Hast ICQ geht einfacher.
    Ansonsten send ich dir mal ne mail mit dem was ich bis jetzt hab.

    Sys:
    TT-FF-S 1.5(4MB-Mod) incl. CI,Nova S-Plus , Asus P4-R800-V Deluxe
    Soft:
    EasyVDR 0.4

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!