Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Perl code wiederverwenden (define), wie möglich?

Frage Entwicklung Perl

Mitglied: marinux

marinux (Level 2) - Jetzt verbinden

31.01.2012, aktualisiert 10:51 Uhr, 3039 Aufrufe, 4 Kommentare

Es geht sinnbildlich um diesen Code:
01.
	if (bla bla){ 
02.
 	    foreach (bla bla){ 
03.
		  $test = $1; 
04.
		  $test2 = $2; 
05.
		  $test3 = $3; 
06.
	    }    
07.
08.
	 
09.
	elsif (blu blu){ 
10.
 	    foreach (blu blu){ 
11.
		  $test = $1; 
12.
		  $test2 = $2; 
13.
		  $test3 = $3; 
14.
	    }    
15.
16.
	else { 
17.
	    foreach (bli bli){ 
18.
		  $test = $1; 
19.
		  $test2 = $2; 
20.
		  $test3 = $3; 
21.
22.
	}
Man sieht, dass sich innerhalb jeder foreach-Anweisung der gleiche Code befindet. Kann man dies in Perl abkürzen, in dem man z.B. schreibt:

01.
        #define CODE = 		  $test = $1;$test2 = $2;$test3 = $3; 
02.
	if (bla bla){ 
03.
 	    foreach (bla bla){ 
04.
		  CODE 
05.
	    }    
06.
07.
	 
08.
	elsif (blu blu){ 
09.
 	    foreach (blu blu){ 
10.
		  CODE 
11.
	    }    
12.
13.
	else { 
14.
	    foreach (bli bli){ 
15.
		  CODE 
16.
17.
	}
Gruß
Mitglied: 64748
31.01.2012 um 13:54 Uhr
Hallo,

das geht mit Perl. Wie sehen denn die Abfragen aus? also was ist "bla bla" und was "blu blu" usw.?

Am einfachsten (aber nicht viel kürzer) wäre eine Funktion:
01.
sub funktion { 
02.
    foreach ( ....) {              # die Parameter sind also bla bla, bli bli usw. 
03.
           CODE   # das ist das Gleiche, was Du auch in Deine Foreach-Schleifen schreibst 
04.
05.
06.
 
07.
# wenn die bla bla usw in ein Array passen, dann 
08.
my @abfragen = ( "bla bla", "blu blu.....usw ; 
09.
foreach ( @abfragen ) { 
10.
    funktion ( $_ ) ; 
11.
}
Nun ist das sehr theoretisch, beschreib mal bitte genauer was Du machen möchtest.

Eigentlich sieht Dein "Beispiel" aber mehr nach Funktionaler Programmierung als nach OO (Wiederverwendbarkeit) aus.

Markus
Bitte warten ..
Mitglied: marinux
31.01.2012 um 14:26 Uhr
Hallo,

Danke für Deine Antwort. Hier geht es nicht um OO sondern um funktionale Programmierung. Kann Perl damit umgehen?

Ich stelle mir das so ähnlich wie in C vor, wo man mit #define Inhalte, also auch Code mehrfach setzen kann.

Gruß
Bitte warten ..
Mitglied: 64748
31.01.2012 um 16:19 Uhr
Ja, Perl kann damit umgehen. Schau Dir mal unter diesem Link http://www.perl.com/pub/2002/05/29/closure.html das Beispiel zu Closures an. Wichtige Lektüre zu Perl und Funktionaler Programmierung: http://hop.perl.plover.com/

Wie ich schon geschrieben habe, wenn wir nicht wissen, was Du tatsächlich machen möchtest, dann ist es schwierig zu raten, was hier wirklich hilfreich ist.

Übrigens musst Du mit Perl schon einige Erfahrung haben, um solche Dinge vernünftig umsetzen zu können. Perl kann zwar alles, der Code ist meist sehr kurz und effizient, aber Perl ist nicht einfach, verglichen z.B. mit Ruby oder Python.
Außerdem solltest Du Dich hüten, C-Code mit Perl zu schreiben, das passiert schnell. Perl ist ja als Werkzeug für die Unix-Systemadministration entstanden und die Leute die es (früher) benutzt haben konnten eben C und die Shell. Aber Perl bietet weit mehr als C und man sollte daher (heutzutage) mit Perl auch richtigen Perlcode schreiben.

Gruß

Markus
Bitte warten ..
Mitglied: marinux
31.01.2012 um 19:38 Uhr
Hallo,

ich werde mich Morgen an der Arbeit mit Deinen Verweisen beschäftigen. Sollte ich nicht weiterkommen, werde ich nochmal ausführlicher auf mein Problem eingehen.

Gruß
Bitte warten ..
Ähnliche Inhalte
Festplatten, SSD, Raid
Alte Festplatten wiederverwenden?
gelöst Frage von DeeJayBeeFestplatten, SSD, Raid6 Kommentare

Hallo zusammen! Klar, eine ausgebaute Festplatte aus einem Rechner in einen anderen einbauen und den Speicherplatz nutzen. Doch ich ...

Perl
Perl script zur Auswertung einer Telefonanlage
gelöst Frage von Fl0wMAGPerl2 Kommentare

Hallo leute, ich bin seit einiger Zeit in der Ausbildung zum Systemintegrator und soll da doch bitte mal in ...

Perl
Perl Scripting routen
gelöst Frage von fredo788Perl13 Kommentare

Hallo, ich habe Probleme mit einem Perl Script. Anmerken muss ich, dass ich sehr unerfahren mit Perl bin. Auf ...

Perl
Perl Variable i Excel
Frage von moritzhdPerl1 Kommentar

Servus zusammen, finde leider im Netz nicht das was ich brauche, und selber habe ich es schon so oft ...

Neue Wissensbeiträge
Microsoft

Update KB4073578 für AMD CPU (Spectre und Meltdown Lücke)

Information von sabines vor 1 StundeMicrosoft

Wegen Problemen (BOSD, nicht startende PCs) wurde das Update KB4056897 und KB4056894 für AMD CPUs zurückgezogen. Dieses Update KB4073578 ...

Mac OS X

MacOS wo ist die Tilde ?

Tipp von Alchimedes vor 14 StundenMac OS X1 Kommentar

Hallo, ich hab eine MacOS qwertz Keyboard auf US Layout umgestellt da die Sonderzeichen besser erreichbar sind. Leider fehlt ...

Datenschutz

Weitere Informationen zum Sicherheitsproblem BeA

Information von Penny.Cilin vor 21 StundenDatenschutz

Im folgenden ein weiterer Bericht über die Sicherheitsprobleme von Bea. Fataler Konstruktionsfehler im besonderen elektronischen Anwaltspostfach Gruss Penny

Windows 10

Systemdienste behalten nach Win10 inplace-Upgrade nicht die ggf. modifizierte Startart bei

Tipp von DerWoWusste vor 23 StundenWindows 103 Kommentare

Stellt Euch vor, Ihr habt ein Win10 System und modifiziert dort die Startart von Systemdiensten. Zum Beispiel wollt Ihr ...

Heiß diskutierte Inhalte
Netzwerke
NTFS-Berechtigung
Frage von Daoudi1973Netzwerke23 Kommentare

Hallo zusammen und frohes neues Jahr (Sorry, ich bin spät dran) Meine Frage: 1- Ich habe einen Ordner im ...

Batch & Shell
AD-Abfrage in Batchdatei und Ergebnis als Variable verarbeiten
gelöst Frage von Winfried-HHBatch & Shell19 Kommentare

Hallo in die Runde! Ich habe eine Ergänzungsfrage zu einem alten Thread von mir. Ausgangslage ist die Batchdatei, die ...

Windows 10
Netbook erkennt Soundkarte nicht - keinerlei Info zum Hersteller und Modell vom Netbook und Hardware bekannt
Frage von fyrb38Windows 1018 Kommentare

Guten Tag, meine Schwester reist in einigen Wochen für ein paar Monate ins Ausland und hat sich dafür ein ...

Microsoft Office
Deaktivieren von Startbildschirm und Backstage-Ansicht in Office 2016 per Batch-Datei
Anleitung von SarekHLMicrosoft Office17 Kommentare

Guten Morgen zusammen! Ich habe mir gestern (auch mit Hilfe dieses Boards) ein Script gebastelt, um in Office 2016 ...