Schrift
[thread]7548[/thread]

Hash als Option missbrauchen (Seite 11)

Leser: 1


<< |< 1 ... 8 9 10 11 12 >| >> 119 Einträge, 12 Seiten
bloonix
 2005-12-24 01:57
#61059 #61059
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
Gibt es hier im Forum sowas wie Syntax-Highlighting?
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
bloonix
 2005-12-24 02:22
#61060 #61060
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
[quote=esskar,24.12.2005, 00:56]aber von langsam an der stelle würde ich nicht sprechen ... wie kommen wir eigentlich darauf (bin jetzt zu faul zurück zu blättern)[/quote]
Es ging hierum ...

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
my %file = (
  'passwd'     => '/etc/passwd',
  'procdir'    => '/proc',
  'stats'      => '/proc/stat',
  'meminfo'    => '/proc/meminfo',
  'sysinfo'    => '/proc/sysinfo',
  'cpuinfo'    => '/proc/cpuinfo',
  'vmstat'     => '/proc/vmstat',
  'loadavg'    => '/proc/loadavg',
  'sockstats'  => '/proc/net/sockstat',
  'netstats'   => '/proc/net/dev',
  'diskstats'  => '/proc/diskstats',
  'partitions' => '/proc/partitions',
  'uptime'     => '/proc/uptime',
  'hostname'   => '/proc/sys/kernel/hostname',
  'domain'     => '/proc/sys/kernel/domainname',
  'kernel'     => '/proc/sys/kernel/ostype',
  'release'    => '/proc/sys/kernel/osrelease',
  'version'    => '/proc/sys/kernel/version',
);


@steffenw, "Codeästhetik und Perl Fun" habe ich mir durchgelesen... nicht schlecht :)

statt
Code: (dl )
print if s/^(\w*):.*/$1/;

würde ich allerdings
Code: (dl )
print "$1\n" if /^(\w*):.*/;


schreiben, denn warum die Zeile erst durch $1 ersetzen, wenn man doch
eh nur $1 ausgeben möchte. Und am Ende einer Zeile befindet sich immer
ein Newline. Oder liege ich da falsch?
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
renee
 2005-12-24 02:44
#61061 #61061
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=esskar,23.12.2005, 13:12][quote=esskar,23.12.2005, 02:21]ich benutz nur perltidy -b[/quote]
OT: sowas könnt man mal ins board einbauen; alles zwischen code wird getidy'ed -> kein fehler von tidy => dann optimierten code, bei fehler (weil gar kein perl-code, ...) einfach das original belassen[/quote]
Damit hast Du Dir selbst eine Aufgabe gestellt, Herr Admin *fg*
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
renee
 2005-12-24 03:01
#61062 #61062
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=opi,24.12.2005, 00:57]Gibt es hier im Forum sowas wie Syntax-Highlighting?[/quote]
ja, ersetze die [code]-Tags durch [perl]-Tags. Aber Vorsicht! die \n verschwinden dann z.B.. Soll heissen, der Tag ist nicht ganz fehlerfrei (Aber im Allgemeinen sollte er funktionieren).

Kannst es ja mal ausprobieren und wenn etwas vom Code "verschwindet", dann einfach Beitrag editieren und [perl] durch [code] ersetzen...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
bloonix
 2005-12-24 03:11
#61063 #61063
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
[quote=renee,24.12.2005, 02:01] Aber Vorsicht! die \n verschwinden dann z.B.. Soll heissen, der Tag ist nicht ganz fehlerfrei (Aber im Allgemeinen sollte er funktionieren).[/quote]
Code (perl): (dl )
1
2
3
print "that's just a test\012";
print "that's just a test
";


klappt doch :)

Nachtrag:

allerdings nur in der Vorschau.\n\n

<!--EDIT|opi|1135386770-->
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
steffenw
 2005-12-24 14:26
#61064 #61064
User since
2003-08-15
692 Artikel
BenutzerIn
[Homepage] [default_avatar]
[quote=opi,24.12.2005, 01:22]@steffenw, "Codeästhetik und Perl Fun" habe ich mir durchgelesen... nicht schlecht :)[/quote]
Spätestens bei "Lingua::Romana::Perligata" merkt man, daß Perl eine Sprache ist, die man auch zum Programmieren nutzen kann und nicht eine Programmiersprache schlechthin.
$SIG{USER} = sub {love 'Perl' or die};
steffenw
 2005-12-24 14:33
#61065 #61065
User since
2003-08-15
692 Artikel
BenutzerIn
[Homepage] [default_avatar]
[quote=opi,24.12.2005, 02:11]
Code (perl): (dl )
1
2
3
print "that's just a test\012";
print "that's just a test
";
[/quote]
Eigentlich paßt doch das "\n". Es sei denn, man macht Netzwerkkommunikation. Der Portabilität wegen ist dann "\x0D \x0A" unter Unix und Windows auch das gleiche "\n" nicht.

Tut mir leid, daß ich nur hexadezimal denken kann, liegt wohl daran, daß ich früher auch mal ASCII auf Lochbändern lesen konnte und die ersten Rechner den Code auch haxadezimal eingetippt erwarteten.
$SIG{USER} = sub {love 'Perl' or die};
renee
 2005-12-24 14:38
#61066 #61066
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
@steffenw: Es geht darum, dass das \n nicht angezeigt wird...

Vergleiche:
Code: (dl )
print "test\n";

und
Code (perl): (dl )
print "test\n";
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
bloonix
 2005-12-26 00:07
#61067 #61067
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
N'abend zusammen,

Hashes sind ja was ganz tolles, aber wenn man auf mehrdimensionale
Hashes zugreifen muss, dann kann die Syntax recht unübersichtlich
werden. Gibt es an dieser Stelle übliche Methoden, um die Übersichtlichkeit
zu erhöhen?

Ich habe zum Beispiel aus diesem Codestück ...

Code: (dl )
1
2
3
4
5
6
7
8
9
if ($stats->{i_stats}->{Processes}->{$pid}->{sProcStartTime} && $stats->{r_stats}->{Processes}->{$pid}->{sProcStartTime} eq $stats->{i_stats}->{Processes}->{$pid}->{sProcStartTime}) {
  for my $key (qw(sProcMinFLT sProcCMinFLT sProcMayFLT sProcCMayFLT sProcUTime sProcSTime sProcCUTime sProcCSTime)) {
     my $tmp = $stats->{r_stats}->{Processes}->{$pid}->{$key};
     $stats->{r_stats}->{Processes}->{$pid}->{$key} -= $stats->{r_stats}->{Processes}->{$pid}->{$key};
     $stats->{r_stats}->{Processes}->{$pid}->{$key} = sprintf('%.2f', $stats->{r_stats}->{Processes}->{$pid}->{$key} / ($uptime - $stats->{i_stats}->{Processes}->{uptime}))
        if $stats->{r_stats}->{Processes}->{$pid}->{$key} > 0;
        $stats->{i_stats}->{Processes}->{$pid}->{$key} = $tmp;
  }
}


das gemacht ...

Code: (dl )
1
2
3
4
5
6
7
8
9
10
my ($r_stats,$i_stats) = ($stats->{r_stats}->{Processes},$stats->{i_stats}->{Processes});

if ($i_stats->{$pid}->{sProcStartTime} && $r_stats->{$pid}->{sProcStartTime} eq $i_stats->{$pid}->{sProcStartTime}) {
  for my $key (qw(sProcMinFLT sProcCMinFLT sProcMayFLT sProcCMayFLT sProcUTime sProcSTime sProcCUTime sProcCSTime)) {
     my $tmp                   = $r_stats->{$pid}->{$key};
     $r_stats->{$pid}->{$key} -= $i_stats->{$pid}->{$key};
     $r_stats->{$pid}->{$key}  = sprintf('%.2f', $r_stats->{$pid}->{$key} / ($uptime - $i_stats->{uptime})) if $r_stats->{$pid}->{$key} > 0;
     $i_stats->{$pid}->{$key}  = $tmp;
  }
}


also ganz einfach die Referenzen auf $r_stats und $i_stats übertragen,
um $stats->{r_stats}->{Processes} nicht schreiben zu müssen.

Greez,
opi
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
steffenw
 2005-12-26 00:59
#61068 #61068
User since
2003-08-15
692 Artikel
BenutzerIn
[Homepage] [default_avatar]
Du hast einfach nur einen Alias in die Struktur gelegt. Das ist so ähnlich wie in JavaScript with (http://de.selfhtml.org/javascript/sprache/objekte.htm#with).

Das ist nicht nur viel weniger Schreibaufwand und übersichtlicher, sondern steigert die Performence ungemein, weil Perl nicht jedesmal durch die Strukturen tippeln muß.

Das zeigt, daß Du es verstanden hast.\n\n

<!--EDIT|steffenw|1135551884-->
$SIG{USER} = sub {love 'Perl' or die};
<< |< 1 ... 8 9 10 11 12 >| >> 119 Einträge, 12 Seiten



View all threads created 2005-12-19 02:24.