Почему я получающий ошибку мерзавца, “удаленную: ошибка: не мог создать временный файл: Никакой такой файл или каталог” на нажатии?

Эта версия жемчуга ожидает вход на stdin или от имен (имен) файлов, указанных на командной строке, и печатает результаты к stdout.

Это использует хеш для отслеживания то, сколько раз это видело те же значения вместе (игнорирующий последующие строки, если они не в обратном порядке сначала). Дважды означает, что отношения между столбцом A и столбцом B двунаправлены <-> B, в то время как однажды средства, однонаправленные от A-> B.

Хеши по сути не заказаны, таким образом, мы можем использовать следующий массив для сохранения порядка входных строк, и распечатать результаты в подобном порядке (не будет точно то же, потому что мы только печатаем AB, даже если BA был также замечен),

Если порядок вывода не важен, то прокомментируйте или удалите my @order строка и push строка и подкачка символ комментария на двух версиях foreach строки ниже.

#! /usr/bin/perl 

use strict;

# hash keys will be 'columnA-columnB', we'll split them when we print the report.
my %AB=();
my @order=();

while(<>) {
    chomp;
    my ($A, $B) = split;

    # have we seen a key B-A?  if so, increment that rather than define A-B
    if (defined($AB{$B . '-' . $A})) {
        $AB{$B . '-' . $A} = 2;
    } elsif (! defined($AB{$A . '-' . $B})) {
        $AB{$A . '-' . $B} = 1;
        push @order, $A . '-' . $B;
    }
}

#foreach my $key (sort keys %AB) {
foreach my $key (@order) {
    my ($A,$B) = split /-/,$key;

    if ($AB{$key} == 1) {
        print "$A -> $B\n";
    } elsif ($AB{$key} == 2) {
        print "$A <-> $B\n";
    } ;
}

Вывод:

Mike <-> John
Pamela <-> Barbara
Mike -> Paul
Roger -> Paul
2
10.12.2013, 02:17
2 ответа

Во-первых, я проверил бы, почему у Вас есть "ошибка: не мог создать временный файл: Никакой такой файл или каталог" при первой попытке. Каков был начальный $TMPDIR? Действительно ли это отличалось от/tmp или/var/tmp? Вы могли проверить полномочия на эти два каталога? Вы рассмотрели добавление "-v" к командам мерзавца, для наблюдения деталей? Если действительно требуется использовать другой TMPDIR, рассмотрите добавление этой переменной в некоторый другой "точечный файл", как .profile.

1
27.01.2020, 22:14
  • 1
    Intially, TMPDIR ни на что не установлен. Если я установил его на/tmp в моем .bashrc, сообщение об ошибке является тем же. –   10.12.2013, 17:30
  • 2
    я также добавил "p.s". к моему исходному сообщению с деталями о различных/tmp каталогах на моем Mac. –   10.12.2013, 17:54
  • 3
    И ввод "нажатия мерзавца - подробный" вставляет одну дополнительную строку во главе вывода: "Продвижение к USER@REMOTE:/git/PROJECT.git" –   10.12.2013, 18:01

Я также получил эту ошибку:error: unable to create temporary file: Not a directory.при добавлении файла.(git add filename.ext)

Я проверил папку .gitи обнаружил подозрительный файл e4(, возможно, поврежденный ). e4должен быть каталогом, но это не так. Итак, я удалил файл (с именем e4 в моем случае )из.git/objects/

rm -rf.git/objects/e4

После этого ошибка больше не повторялась.

1
27.01.2020, 22:14

Теги

Похожие вопросы