Thread '3,6-10,16,23' in (3,6,7,8,9,10,16,23) umwandeln (12 answers)
Opened by mixxer at 2019-08-22 22:28

mixxer
 2019-08-22 22:28
#190383 #190383
User since
2016-04-01
25 Artikel
BenutzerIn
[default_avatar]
Hi Leute,
es gibt bei so ziemlich allen mir bekannten "Drucken-Dialogen" die Möglichkeit, meine zu druckenden Seiten als Zeichenkette zu übergeben.
Zb. '3,6-10,16,23' druckt mir die demenstsprechenden Seiten.
Ich benötige für ein Projekt eine ensprechende Funktion.
Bei obiger Zeichenkette soll diese Funktion eine Liste mit dem Inhalt (3,6,7,8,9,10,16,23) zurückgeben. Ich habe mich schon ein wenig versucht, kann mir jedoch vorstellen, dass das eleganter geht!?
Wonach kann ich googeln? gibt es dafür einen Fachbegriff?
Hier mein Snippet...
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#!/usr/bin/perl
use strict;
use warnings;
use diagnostics;
use Data::Dumper;

use Scalar::Util qw(looks_like_number);

my $text = '1-20,1,1,1,2,4,5,8,9,3-4';

my $list = &_text_to_list($text);
print Dumper $list;
exit;

sub _text_to_list
#
{
my @list = split( ',', shift );
my %hash;

for ( 0 .. $#list ) {
if ( $list[$_] =~ /(.*)-(.*)/ ) {
$hash{$_} = 1 for $1 .. $2;
next;
}
$hash{ $list[$_] } = 1 if looks_like_number( $list[$_] );
}

@list = ();
push @list, $_ for keys %hash;
return \@list;
}

View full thread '3,6-10,16,23' in (3,6,7,8,9,10,16,23) umwandeln