1
2
3
4
5
6
7
8
# J.M., 2019-10-07 {
sub getPlatform()
{
my $platform = system('dpkg --print-architecture');
$platform =~ s/^\s+|\s+$//g;
return $platform;
}
# } J.M., 2019-10-07
1
2
3
4
5
6
7
8
9
10
# J.M., 2019-10-07 {
my $platform = getPlatform();
print $platform . '\n';
if( chomp($platform) eq "amd64" ) {
system('touch /tmp/amd64');
sleep(10);
}else{
print 'nein\n';
}
# } J.M., 2019-10-07
Quoteamd64
0\nnein
2019-10-07T16:47:44 LinuxerSehe ich nicht so
2019-10-08T08:21:14 DaximMangels (leidvoller) Erfahrung?
2019-10-12T21:01:33 clmsFalls da wirklich ein Newline am Ende des Strings ist, muss man das chomp ohnehin vor dem s/// machen, weil sonst der \s+$-Teil der Regex nicht das gewünschte Ergebnis liefert.
QuoteEs kommt sicher auf den Programmierstil an.
1 2 3 4 5 6 7 8 9 10
my $s = "A\r\n"; say "@{[map{sprintf '%02X', $_} unpack 'C*', $s]}"; # 41 0D 0A say chomp $s; # 1 say "@{[map{sprintf '%02X', $_} unpack 'C*', $s]}"; # 41 0D # ändere die Voreinstellung für $/ $/ = "\r\n"; $s = "B\r\n"; say chomp $s; # 2 say "@{[map{sprintf '%02X', $_} unpack 'C*', $s]}"; # 42
1 2 3 4 5 6
# benutzerdefinierte Einstellung # für $/ in dynamischen Scope do{ local $/ = "\r\n"; #... };
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
sub get_platform();
sub test();
test();
sub test() {
my $platform = get_platform();
print $platform . "\n";
if( $platform eq "amd64") {
print 'yes'."\n";
}
else {
print 'no'."\n";
}
}
sub get_platform()
{
my $platform = system('dpkg --print-architecture');
#$platform =~ s/^\s+|\s+$//g;
return $platform;
}
Quoteamd64
0
no
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
#!/usr/bin/perl use strict; use v5.10; my $erg=open(my $fh, "-|",'dpkg --print-architecture'); if (not $erg) { say "open FAILED: $!"; exit 1; } my $zeile=<$fh>; chomp($zeile); # \n entfernen close($fh); my $amd_string="amd64"; if ( $zeile eq $amd_string ) { say "Ja, '$amd_string'"; } else { say "Nein, kein '$amd_string'"; }
1 2 3 4 5 6 7 8 9 10 11 12 13
# Variable enthält Kommandozeile des zu startenden Programms mit Parametern my $callprogram = 'dpkg --print-architecture'; # Programm schriebt auf Pipe und diese wird per Dateinhandle geöffnet open my $fh, "$callprogram|" or die "Fehler: Pipe öffnet nicht '$!'"; # die Ausgabezeilen der Pipe auslesen my @lines = <$fh>; # Lesen aus der Pipe schließen close $fh or die $!; # und nun kannst du über @lines deine Ausgabe verarbeiten.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
my $callprogram = 'dpkg --print-architecture'; my $response = qx/$callprogram/; # Programm aufrufen und Ausgabe in Variable einlesen # Prüfe ob Fehler nach Aufruf vorliegt if ($? == -1) { print "Kann nicht ausgefuehrt werden: $!\n"; } elsif ($? & 127) { printf "Kindprozess endete - Signal %d, %s coredump\n", ($? & 127), ($? & 128) ? 'mit' : 'ohne'; } else { printf "Kindprozess endete mit Rueckgabewert %d\n", $? >> 8; }
QuoteFor three or more arguments if MODE is |- , the filename is interpreted as a command to which output is to be piped, and if MODE is -| , the filename is interpreted as a command that pipes output to us. In the two-argument (and one-argument) form, one should replace dash (- ) with the command.