Quiq

 view release on metacpan or  search on metacpan

lib/Quiq/Path.pm  view on Meta::CPAN

    }
    else {
        if ($this->compareData($tmpFile,$$dataR,$encoding)) {
            $ask = 1;
        }
    }

    if ($ask) {
        # Rückfrage an Benutzer

        my $answ = Quiq::Terminal->askUser(
            "Confirm changes?",
            -values => 'y/n',
            -default => 'y',
        );
        if ($answ eq 'y') {
            # Schreibe die Änderungen auf die Datei

            if ($file) {
                $this->copy($tmpFile,$file);
            }
            else {
                $$dataR = $this->read($tmpFile,-decode=>'utf-8');
            }
            $changed = 1;
        }
    }

    return $changed;
}

# -----------------------------------------------------------------------------

=head3 detectEncoding() - Liefere das Encoding der Datei

=head4 Synopsis

  $encoding = $class->detectEncoding($path,$altEncoding);

=head4 Alias

encoding()

=head4 Description

Analysiere Datei $path hinsichtlich ihres Character-Encodings
und liefere den Encoding-Bezeichner zurück. Unterschieden werden:

=over 2

=item *

ASCII

=item *

UTF-8

=item *

UTF-16/32 mit BOM

=back

und $altEncoding. Ist $altEncoding nicht angegeben, wird
'ISO-8859-1' angenommen.

Anmerkung: Die Datei wird zur Zeichensatz-Analyse vollständig eingelesen.
Bei großen Dateien kann dies ineffizient sein.

=cut

# -----------------------------------------------------------------------------

sub detectEncoding {
    my $class = shift;
    my $path = shift;
    my $altEncoding = shift // 'ISO-8859-1';

    my $data = $class->read($path);
    my $dec = Encode::Guess->guess($data);
    if (ref $dec) {
        return $dec->name;
    }
    elsif ($dec =~ /No appropriate encodings found/i) {
        return $altEncoding;
    }

    # Unerwarteter Fehler

    $class->throw(
        'PATH-00099: Can\'t decode file content',
        Path => $path,
        Message => $dec,
    );
}

{
    no warnings 'once';
    *encoding = \&detectEncoding;
}

# -----------------------------------------------------------------------------

=head3 link() - Erzeuge (Hard)Link

=head4 Synopsis

  $this->link($path,$link);

=head4 Options

=over 4

=item -force => $bool (Default: 0)

Lösche die Datei $link, falls sie bereits existiert.

=back

=head4 Description



( run in 0.580 second using v1.01-cache-2.11-cpan-c966e8aa7e8 )