Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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, 3015 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: hmarkus
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: hmarkus
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
Switche und Hubs
gelöst Cisco SG 200-08 firmware boot code language upgrade Was ist zu beachten ? (5)

Frage von dxellas zum Thema Switche und Hubs ...

Batch & Shell
gelöst PS: Suche "eleganteren" Code (10)

Frage von Kraemer zum Thema Batch & Shell ...

Windows Update
gelöst Windows Update Fehler Code 0x80244018 bei Exchange 2010 (5)

Frage von Froschmedia zum Thema Windows Update ...

Windows 10
Nach Anniversary Update kein Bluetooth Pairing möglich (4)

Frage von schuhmann zum Thema Windows 10 ...

Neue Wissensbeiträge
Sicherheits-Tools

Sicherheitstest von Passwörtern für ganze DB-Tabellen

(1)

Tipp von gdconsult zum Thema Sicherheits-Tools ...

Peripheriegeräte

Was beachten bei der Wahl einer USV Anlage im Serverschrank

(9)

Tipp von zetboxit zum Thema Peripheriegeräte ...

Windows 10

Das Windows 10 Creators Update ist auf dem Weg

(6)

Anleitung von BassFishFox zum Thema Windows 10 ...

Heiß diskutierte Inhalte