Как добавить нулевой символ в строку в Perl? - PullRequest
3 голосов
/ 03 декабря 2010

Я хочу создать строку в perl с длиной, например, 7, но "видимым" содержимым, например, "a".

my $ test = ...;

print$ test result: результат печати "a" ($ test): 7

Ответы [ 3 ]

12 голосов
/ 03 декабря 2010

Вы добавляете нулевые символы в строку. Почему вы хотите, чтобы это было за мной, но как вы это делаете, показано ниже.

{ow-loopkin:tmp:->perl
$string = "e\0\0\0\0";
print length $string;
[ctrl+d]
5
{ow-loopkin:tmp:->

Вы также можете использовать pack (), чтобы заполнить его нулями:

ow-loopkin:tmp:->perl
$string = pack("Z6", 42);
print length $string;
[ctrl+d]
6
{ow-loopkin:tmp:->
0 голосов
/ 24 августа 2016

Пример использования:

#!/usr/bin/perl

use strict;
use warnings;
use Data::Dumper;

require 'syscall.ph';

my $path = '/root/target';
my $buf = "\0"x512; # $buf (pointer) must be large enough to receive data

# See statf(2) on Linux
syscall(&SYS_statfs, $path, $buf) == 0 or die($!);

my @st = unpack 'L7', $buf;

print Dumper(\@st);

1;
0 голосов
/ 03 декабря 2010

См. Функцию pack, возможно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...