Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

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, 3028 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
Visual Studio
gelöst C-Sharp Code in native Code kompilieren? (3)

Frage von clragon zum Thema Visual Studio ...

Entwicklung
gelöst Powershell code implementieren (3)

Frage von Mr.KitKat zum Thema Entwicklung ...

VB for Applications
gelöst Excel VBA Code (2)

Frage von specialuser zum Thema VB for Applications ...

Batch & Shell
gelöst Powershell - Ausgabe des Codes als Text (9)

Frage von internet2107 zum Thema Batch & Shell ...

Neue Wissensbeiträge
Sicherheit

Millionen Euro in den Sand gesetzt?

(3)

Information von transocean zum Thema Sicherheit ...

Sicherheit

How I hacked hundreds of companies through their helpdesk

Information von SeaStorm zum Thema Sicherheit ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
Eine Netzwerkdose im Wechsel für zwei unterschiedliche Netze (12)

Frage von kartoffelesser zum Thema LAN, WAN, Wireless ...

Netzwerke
Mobile Einwahl IPSec VPN von iPhone iPad T-Mobile zur Pfsense (11)

Frage von Spitzbube zum Thema Netzwerke ...

Voice over IP
SNOM D765 an LancomR883VAW (10)

Frage von MS6800 zum Thema Voice over IP ...

Windows Netzwerk
Ordner-Freigabe außerhalb der Domäne (9)

Frage von Remsboys zum Thema Windows Netzwerk ...