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, 2999 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 ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Festplatten, SSD, Raid
Performancesteigerung des RAID Arrays möglich? (13)

Frage von takvorian zum Thema Festplatten, SSD, Raid ...

Windows Netzwerk
Kein RDP über VPN per MS-TSC möglich (9)

Frage von survial555 zum Thema Windows Netzwerk ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Festplatten, SSD, Raid
M.2 SSD wird nicht erkannt (14)

Frage von uridium69 zum Thema Festplatten, SSD, Raid ...