Eine Perl-Laien-Frage:
Zitat von: CoolTux am 02 Februar 2022, 19:41:26
#!/usr/bin/perl
#
use strict;
use warnings;
use feature qw /say/;
my @zahlen = ( 34, 76, 23, 1, 5, 9, 4, 7, 234, 98, 34 );
say join ',', ( sort { $a <=> $b } (@zahlen) )[ 0, -1 ];
exit;
Die Angabe in eckigen Klammern, gehört die zu join, sehe das hier das erste Mal, das man die Indexe so einfach mit Komma getrennt angeben kann ?
join gibt aber einen Skalar zurück also kann es damit ja nix zu tun haben .
Mit dem Zugriffsoperator scheint das aber auch nix zu tun zu haben, weil sowas klappt nicht:
{my @ar=sort(14,12,2,23,3 );; $ar[0,2]}
2
Die eckigen Klammern gehören zum Slicing der Array Elemente. Also das rausnehmen von "Scheiben" aus einem Array. In diesem Fall der erste und der letzte Index des Arrays. Zerlegt würde es er so heißen
my @firstAndLast = @array[0,-1];
Hi, Danke für die Antwort.
Habs nicht gleich verstanden gehabt, mich aber mit beschäftigt und ziehe daraus das :
my @firstAndLast = @array[0,-1];
nur eine andere Schreibweise von dem hier ist:
my @firstAndLast = ($array[0], $array[-1]);
Hier komm ich bis jetzt auch nicht mit:
Zitat von: Beta-User am 03 Februar 2022, 08:54:34
Ansonsten mal vergleichen:
{min 3,9,12}
{List::Util::min 3,9,12}
{min 3,9,12}
ergibt bei mir 12
Mit
List::Util:: dann 3
Warum klappts aber ohne
List::Util:: mit Dezimalzahlen wie yersinia das zeigt ?
{min 3.497,3.491,3.494,3.499}
3.491
Zitat von: TomLee am 03 Februar 2022, 14:26:43
Hier komm ich bis jetzt auch nicht mit:
{min 3,9,12}
ergibt bei mir 12
Mit List::Util:: dann 3
Warum klappts aber ohne List::Util:: mit Dezimalzahlen wie yersinia das zeigt ?
{min 3.497,3.491,3.494,3.499}
3.491
Weil alle strings gleich lang sind und der Punkt anscheinend alphanumerisch vor den Zahlen kommt... Sobald da was "unklar" wird, paßt es eben mit dem Textvergleich (FHEM-"min") nicht, siehe:
{min 3,9,12.2}
Ok, danke, nach weiteren Tests mit verschiedenen Werten komm ich denk ich jetzt mit, verinnerlicht hab ich das aber bestimmt noch nicht.
Einfache Regel: Perl wurde von einem Linguisten erfunden => für Perl ist alles erst mal ein Text...
Hi,
ist eine schliessende eckige Klammer kein Zeichen ?
Warum entfernt mir chop die 0 und nicht die Klammer ?
{my $confr='bli bla 0]';;my @ar=split/ /,$confr;; return chop $ar[2];;}
ZitatPerl chop()
The Perl chop() function removes last character from a string regardless of what that character is. It returns the chopped character from the string.
Deshalb.
Gruß
Dan
{my $confr='bli bla 0]';;my @ar=split/ /,$confr;;my $ab=$ar[2];;chop $ab;;return $ab}
Ich denke das ist das was du willst.
Gruß
Dan
Ja, danke, über den "Umweg" Variable gehts, hab ich selbst auch danach gemerkt, ich wollt noch editieren, kam aber bis jetzt ein Anruf dazwischen.